c# - 如何在 Puppeteer Sharp 中实现插件隐身?
问题描述
我想知道如何以及是否可以puppeteer-extra-plugin-stealth
在 Visual Studio 项目中使用。据我所知,有一个名为:puppeteer sharp
但他们没有展示如何使用插件隐身,因为这是最好的浏览器,不能检测为“ bot
”。
在我的另一个puppeteer .js file
编译中,Docker
我安装了这个代码来加载puppeteer-extra-plugin-stealth
:
Docker puppeteer 代码:
const puppeteer = require('puppeteer-extra');
const stealthPlugin = require('puppeteer-extra-plugin-stealth');
const { IS_PROD } = require('../utils/constants');
puppeteer.use(stealthPlugin());
// In order to run chromium processes in parallel. https://github.com/puppeteer/puppeteer/issues/594#issuecomment-325919885
process.setMaxListeners(Infinity);
const getBrowserInstance = async (port) => {
const browser = await puppeteer.launch({
args: IS_PROD ? ['--no-sandbox', `--proxy-server=socks5://127.0.0.1:${port}`] : ['--no-sandbox'],
devtools: !IS_PROD,
executablePath: IS_PROD ? '/usr/bin/chromium-browser' : undefined,
});
const incognitoBrowserContext = browser.createIncognitoBrowserContext();
incognitoBrowserContext.close = browser.close;
return incognitoBrowserContext;
};
module.exports = {
getBrowserInstance,
};
但这是我的 C# 表单,我不知道如何使用、加载或实现puppeteer-extra-plugin-stealth
我的 VS 代码:
using PuppeteerSharp;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace pupe
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private async void button1_Click(object sender, EventArgs e)
{
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true
});
var page = await browser.NewPageAsync();
await page.SetViewportAsync(new ViewPortOptions
{
Width = 1920,
Height = 1080
});
await page.GoToAsync("https://bot.sannysoft.com/");
await page.ScreenshotAsync("screens/test.png", new ScreenshotOptions { Type = ScreenshotType.Png });
MessageBox.Show("screen done!");
}
}
}
解决方案
将隐形插件添加到 puppeteer-sharp 可能不像在 NodeJS 版本上那么简单。存在与 puppeteersharp 一起使用的 puppeteer-extra 的 AC# 端口。检查https://github.com/Overmiind/Puppeteer-sharp-extra。
推荐阅读
- python - 从 nodejs 访问 opencv 的 Python 脚本。
- excel - 在 Excel 中为图表选择数据时跳过行的语法是什么?
- python - 无法解析剩余部分:'{{ list[loop.index0] }}'
- python - 如何在没有 '[ ]' 和 ' ' 的情况下将字符串转换为列表
- python - 使用 discord.py 模块创建不和谐机器人时出错。我认为这与使用 anaconda 进行安装有关
- machine-learning - 使用进一步优先遍历和 k-mean++ 进行 K-means 初始化
- javascript - 如何从外部 JSON 文件一次显示一张图像 - 创建幻灯片
- php - 表单的选择输入不会在 php 电子邮件上呈现
- python - CVXPY 向量约束
- javascript - 检查 div 是否可见或隐藏并切换类