首页 > 解决方案 > 如何在 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!");
        }
    }
}

标签: c#visual-studiopuppeteersharp

解决方案


将隐形插件添加到 puppeteer-sharp 可能不像在 NodeJS 版本上那么简单。存在与 puppeteersharp 一起使用的 puppeteer-extra 的 AC# 端口。检查https://github.com/Overmiind/Puppeteer-sharp-extra


推荐阅读