如何使用 Node JS Puppeteer 在无头 chrome 请求中设置代理服务器
how do I set a proxy server in my headless chrome request using Node JS Puppeteer
/我是 运行 chrome 上的无头搜索请求,我需要访问代理服务器/
const puppeteer = require('puppeteer');
var url="https://www.google.com/search?q=";
var keyword="hotels";
var urls;
var desktopUserAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36";
const response=[];
var i=0;
var userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36";
(async () => {
const browser = await puppeteer.launch({headless: false });
const page = await browser.newPage();
urls=url+keyword;
page.setUserAgent(userAgent);
response[i]=await page.goto(urls);
console.log(await browser.version());
})();
//我需要能够访问代理服务器才能google搜索
你可以像这样在参数中传入一个代理,
const options = {
headless: false,
args: [
`--proxy-server=${proxyIP:proxyPORT}`,
`--ignore-certificate-errors`
]
};
const browser = await puppeteer.launch(options);
如果需要代理身份验证,可以在页面对象中使用以下内容,
await page.authenticate(user, pass);
我制作了一个模块来执行此操作。它被称为puppeteer-page-proxy。
它支持为整个页面设置代理,或者如果你愿意,它可以为每个请求设置不同的代理。
首先安装它:
npm i puppeteer-page-proxy
然后要求它:
const useProxy = require('puppeteer-page-proxy');
使用起来很简单;
为整个页面设置代理:
await useProxy(page, 'http://127.0.0.1:8000');
如果你想为每个请求使用不同的代理,那么你可以简单地这样做:
await page.setRequestInterception(true);
page.on('request', req => {
useProxy(req, 'socks5://127.0.0.1:9000');
});
那如果你想确定你的页面的IP变了,你可以查一下;
const data = await useProxy.lookup(page);
console.log(data.ip);
它支持 http、https、socks4 和 socks5 代理,如果需要,它还支持身份验证:
const proxy = 'http://login:pass@127.0.0.1:8000'
/我是 运行 chrome 上的无头搜索请求,我需要访问代理服务器/
const puppeteer = require('puppeteer');
var url="https://www.google.com/search?q=";
var keyword="hotels";
var urls;
var desktopUserAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36";
const response=[];
var i=0;
var userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36";
(async () => {
const browser = await puppeteer.launch({headless: false });
const page = await browser.newPage();
urls=url+keyword;
page.setUserAgent(userAgent);
response[i]=await page.goto(urls);
console.log(await browser.version());
})();
//我需要能够访问代理服务器才能google搜索
你可以像这样在参数中传入一个代理,
const options = {
headless: false,
args: [
`--proxy-server=${proxyIP:proxyPORT}`,
`--ignore-certificate-errors`
]
};
const browser = await puppeteer.launch(options);
如果需要代理身份验证,可以在页面对象中使用以下内容,
await page.authenticate(user, pass);
我制作了一个模块来执行此操作。它被称为puppeteer-page-proxy。 它支持为整个页面设置代理,或者如果你愿意,它可以为每个请求设置不同的代理。
首先安装它:
npm i puppeteer-page-proxy
然后要求它:
const useProxy = require('puppeteer-page-proxy');
使用起来很简单; 为整个页面设置代理:
await useProxy(page, 'http://127.0.0.1:8000');
如果你想为每个请求使用不同的代理,那么你可以简单地这样做:
await page.setRequestInterception(true);
page.on('request', req => {
useProxy(req, 'socks5://127.0.0.1:9000');
});
那如果你想确定你的页面的IP变了,你可以查一下;
const data = await useProxy.lookup(page);
console.log(data.ip);
它支持 http、https、socks4 和 socks5 代理,如果需要,它还支持身份验证:
const proxy = 'http://login:pass@127.0.0.1:8000'