首页 > 解决方案 > Twitter 在无头 chrome puppeteer 中被屏蔽

问题描述

    ,'--lang=en-US,en;q=0.9'],slowMo: 10,userDataDir: './twitter/myUserDataDir'})
    const page = await browser.newPage()
    await page.setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/73.0.3683.75 Safari/537.36');
    await page.setExtraHTTPHeaders({
        'Accept-Language': 'en-US,en;q=0.9'
    });
    
    const context = browser.defaultBrowserContext();
    context.overridePermissions("https://twitter.com", ["geolocation", "notifications"]);
    await page.setViewport({width: 1280, height: 800});

当 puppeteer 中的 headless = true 时,twitter 网站不工作,有人可以让我如何让它工作吗?

标签: node.jspuppeteer

解决方案


函数中使用的字符串参数page.setUserAgent应该是常规的 chrome 用户代理。HeadlessChrome从您正在使用的字符串中删除。您的函数调用应如下所示:

await page.setUserAgent(
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36"
)

注意它是Chrome/95.0.4638.69 Safari/537.36和不是HeadlessChrome/73.0.3683.75 Safari/537.36


推荐阅读