node.js - 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 网站不工作,有人可以让我如何让它工作吗?
解决方案
函数中使用的字符串参数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
推荐阅读
- oracle - 根据 varchar 列 Oracle 将表拆分为相等的块
- angular - 从Angular中的选项选择执行功能
- javascript - 当我使用 javascript 加载图块时,如何在 openlayers 地图中只显示一个图块
- python - Python如何通过套接字发送元组数据(签名)
- angular - 使用angular2的可移动弹出窗口
- admob - 由于包名称,Admob 不显示奖励视频
- css - querySelector 和 nth-child 的问题
- c# - 使用 C# 捕获鼠标点击和键盘击键
- makefile - 无法获得以任何身份工作的隐式/模式规则
- php - Laravel:redirecTo() 方法无法正常工作