【发布时间】:2021-05-17 12:14:33
【问题描述】:
所以在我的网络爬虫功能中,我有以下代码行:
let portList = [9050, 9052, 9053, 9054, 9055, 9056, 9057, 9058, 9059, 9060];
let spoofPort = portList[Math.floor(Math.random()*portList.length)];
console.log("The chosen port was " + spoofPort);
const browser = await puppeteerExtra.launch({ headless: true, args: [
'--no-sandbox', '--disable-setuid-sandbox', '--proxy-server=socks5://127.0.0.1:' + spoofPort
]});
const page = await browser.newPage();
const userAgent = 'Mozilla/5.0 (X11; Linux x86_64)' +
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.39 Safari/537.36';
await page.setUserAgent(userAgent);
我正在尝试轮换每个请求的 IP 地址(包含此代码的函数本质上是在来自客户端的每个请求上调用),这样我就不会被抓取的网站这么快阻止。我收到以下错误:
2021-05-17T12:08:19.625349+00:00 app[web.1]: The chosen port was 9050
2021-05-17T12:08:20.042016+00:00 app[web.1]: Error: net::ERR_PROXY_CONNECTION_FAILED at https://expampleDomanPlaceholder.com
2021-05-17T12:08:20.042018+00:00 app[web.1]: at navigate (/app/node_modules/puppeteer/lib/cjs/puppeteer/common/FrameManager.js:115:23)
2021-05-17T12:08:20.042018+00:00 app[web.1]: at processTicksAndRejections (internal/process/task_queues.js:93:5)
2021-05-17T12:08:20.042019+00:00 app[web.1]: at async FrameManager.navigateFrame (/app/node_modules/puppeteer/lib/cjs/puppeteer/common/FrameManager.js:90:21)
2021-05-17T12:08:20.042020+00:00 app[web.1]: at async Frame.goto (/app/node_modules/puppeteer/lib/cjs/puppeteer/common/FrameManager.js:416:16)
2021-05-17T12:08:20.042021+00:00 app[web.1]: at async Page.goto (/app/node_modules/puppeteer/lib/cjs/puppeteer/common/Page.js:819:16)
2021-05-17T12:08:20.042021+00:00 app[web.1]: at async /app/app.js:174:9
我已经尝试了这些帖子中详述的解决方案,但问题可能出在我的 userAgent 上?:
Getting error when attempting to use proxy server in Node.js / Puppeteer
https://github.com/puppeteer/puppeteer/issues/2472
更新:我尝试使用此 buildpack (https://github.com/iamashks/heroku-buildpack-tor-proxy.git),但它一直导致我的 web dyno 中断(返回“H14”错误,这意味着您必须清除构建包并重新添加它们)。不知道如何从这里开始,因为这似乎是我能遇到的唯一解决方案。
【问题讨论】:
-
日志中的错误是正确的:
net::ERR_PROXY_CONNECTION_FAILED看来是Tor没有配置on not working。 -
@Vaviloff 在某些情况下,我正在部署到 Heroku 并在 Mac 上的 Node.js 环境中工作。查看此链接 (medium.com/@jsilvax/running-puppeteer-with-tor-45cc449e5672),您似乎对我没有下载 Tor 是正确的。但是如果我要部署到 Heroku,我如何确保 tor 工作?我要安装这个包还是什么:npmjs.com/package/tor-request
-
@Vaviloff 你有什么建议吗?
-
我建议您搜索 using tor on heroku 之类的内容,然后相应地调整您的应用
-
@Vaviloff 所以我尝试将 Tor 构建包从您的链接添加到我的 Heroku 应用程序,但仍然无法让我的代码正常工作。我还尝试了一堆其他“免费代理”掩码,但它们都不起作用(包括 puppeteer-page-proxy 和 get-free-https-proxy)。你知道有谁在你可以联系我之前将 Tor 部署到 Heroku 吗?
标签: javascript node.js web-scraping proxy puppeteer