Con*_*eid 11 javascript proxy request http-proxy node.js
抱歉,这令人困惑。
我使用NodeJS请求模块编写了一个脚本,该模块在网站上运行并执行功能,然后返回数据。当我不通过将其设置为false来使用代理时,此脚本可以很好地工作。这不是Selenium / puppeteer不允许完成的任务
proxy: false
但是,当我设置一个(工作的)代理服务器时。它无法执行相同的任务,并被网站防火墙/ antibot软件检测到。
proxy: http://xx.xxx.xx.xx:3128
注意事项:
问题基本上是。使用代理时,请求模块是否更改任何内容(例如标头顺序)?
唯一的区别是更改了导致失败的代理。提出一个请求,不提出一个请求。
url : url,
simple : false,
forever: true,
resolveWithFullResponse: true,
gzip: true,
headers: {
'Host' : 'www.sitename.com',
'Connection' : 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36',
'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-encoding' : 'gzip, deflate, br',
'Accept-Language' : 'en-GB,en-US;q=0.9,en;q=0.8',
},
method : 'GET',
jar: globalJar,
simple: false,
followRedirect: false,
followAllRedirects: false,
Run Code Online (Sandbox Code Playgroud)
根据请求模块的代理文档:
默认情况下,当代理 http 流量时,request 将简单地发出标准的代理 http 请求。这是通过将请求的初始行的 url 部分设置为端点的完全限定 url 来完成的。
相反,您可以通过设置使用http 隧道:
tunnel : true
Run Code Online (Sandbox Code Playgroud)
在请求模块代理设置中。
在您的情况下,您可能正在发出 标准的代理 http 请求,而当在您的系统上全局使用代理或 Chrome 扩展时,会创建一个http 隧道。
从文档中:
请注意,使用隧道代理时,代理授权标头和自定义 proxyHeaderExclusiveList 中的任何标头永远不会发送到端点服务器,而只会发送到代理服务器。
| 归档时间: |
|
| 查看次数: |
1002 次 |
| 最近记录: |