Puppeteer Crawler - Error: net::ERR_TUNNEL_CONNECTION_FAILED
Puppeteer Crawler - Error: net::ERR_TUNNEL_CONNECTION_FAILED
目前我有我的 Puppeteer 运行 Heroku 代理。在本地,代理中继工作得很好。但是,我收到错误错误:net::ERR_TUNNEL_CONNECTION_FAILED。我已经在 Heroku 配置变量中设置了所有 .env 信息,因此它们都可用。
知道如何修复此错误并解决问题吗?
我目前有
const browser = await puppeteer.launch({
args: [
"--proxy-server=https=myproxy:myproxyport",
"--no-sandbox",
'--disable-gpu',
"--disable-setuid-sandbox",
],
timeout: 0,
headless: true,
});
page.authentication
代理服务器参数的正确格式是,
--proxy-server=HOSTNAME:PORT
如果是 HTTPS 代理,您甚至可以在进行导航之前使用 page.authenticate
传递用户名和密码,
page.authenticate({username:'user', password:'password'});
完整代码如下所示,
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless:false,
ignoreHTTPSErrors:true,
args: ['--no-sandbox','--proxy-server=HOSTNAME:PORT']
});
const page = await browser.newPage();
// Authenticate Here
await page.authenticate({username:user, password:password});
await page.goto('https://www.example.com/');
})();
代理链
如果使用上述方法验证无法正常工作,您可能需要在其他地方处理验证。
有多个软件包可以做到这一点,一个是 proxy-chain
,有了这个,您可以使用一个代理,并将其用作新的代理服务器。
proxyChain.anonymizeProxy(proxyUrl) 将使用一个带有用户名和密码的代理,创建一个您可以在脚本上使用的新代理。
const puppeteer = require('puppeteer');
const proxyChain = require('proxy-chain');
(async() => {
const oldProxyUrl = 'http://username:password@hostname:8000';
const newProxyUrl = await proxyChain.anonymizeProxy(oldProxyUrl);
// Prints something like "http://127.0.0.1:12345"
console.log(newProxyUrl);
const browser = await puppeteer.launch({
args: [`--proxy-server=${newProxyUrl}`],
});
// Do your magic here...
const page = await browser.newPage();
await page.goto('https://www.example.com');
})();
目前我有我的 Puppeteer 运行 Heroku 代理。在本地,代理中继工作得很好。但是,我收到错误错误:net::ERR_TUNNEL_CONNECTION_FAILED。我已经在 Heroku 配置变量中设置了所有 .env 信息,因此它们都可用。
知道如何修复此错误并解决问题吗?
我目前有
const browser = await puppeteer.launch({
args: [
"--proxy-server=https=myproxy:myproxyport",
"--no-sandbox",
'--disable-gpu',
"--disable-setuid-sandbox",
],
timeout: 0,
headless: true,
});
page.authentication
代理服务器参数的正确格式是,
--proxy-server=HOSTNAME:PORT
如果是 HTTPS 代理,您甚至可以在进行导航之前使用 page.authenticate
传递用户名和密码,
page.authenticate({username:'user', password:'password'});
完整代码如下所示,
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless:false,
ignoreHTTPSErrors:true,
args: ['--no-sandbox','--proxy-server=HOSTNAME:PORT']
});
const page = await browser.newPage();
// Authenticate Here
await page.authenticate({username:user, password:password});
await page.goto('https://www.example.com/');
})();
代理链
如果使用上述方法验证无法正常工作,您可能需要在其他地方处理验证。
有多个软件包可以做到这一点,一个是 proxy-chain
,有了这个,您可以使用一个代理,并将其用作新的代理服务器。
proxyChain.anonymizeProxy(proxyUrl) 将使用一个带有用户名和密码的代理,创建一个您可以在脚本上使用的新代理。
const puppeteer = require('puppeteer');
const proxyChain = require('proxy-chain');
(async() => {
const oldProxyUrl = 'http://username:password@hostname:8000';
const newProxyUrl = await proxyChain.anonymizeProxy(oldProxyUrl);
// Prints something like "http://127.0.0.1:12345"
console.log(newProxyUrl);
const browser = await puppeteer.launch({
args: [`--proxy-server=${newProxyUrl}`],
});
// Do your magic here...
const page = await browser.newPage();
await page.goto('https://www.example.com');
})();