小编Con*_*eid的帖子

使用代理时如何停止NodeJS“请求”模块更改请求

抱歉,这令人困惑。

我使用NodeJS请求模块编写了一个脚本,该模块在网站上运行并执行功能,然后返回数据。当我不通过将其设置为false来使用代理时,此脚本可以很好地工作。这不是Selenium / puppeteer不允许完成的任务

proxy: false

但是,当我设置一个(工作的)代理服务器时。它无法执行相同的任务,并被网站防火墙/ antibot软件检测到。

proxy: http://xx.xxx.xx.xx:3128

注意事项:

  • 我尝试了许多(20+)个不同的代理提供程序(住宅和数据中心),他们都遇到了这个问题
  • 如果在我的系统上全局设置了该代理,则不会发生此问题
  • 如果在Chrome扩展程序中设置了该代理,则不会发生此问题
  • SSL密码套件不匹配Chrome,但是当不使用代理时它们仍然不匹配,因此我认为这不是问题
  • 保持标头顺序的一致性非常重要

问题基本上是。使用代理时,请求模块是否更改任何内容(例如标头顺序)?

这是通过/失败时发生的图像。 在此处输入图片说明

唯一的区别是更改了导致失败的代理。提出一个请求,不提出一个请求。

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)

javascript proxy request http-proxy node.js

11
推荐指数
1
解决办法
1002
查看次数

标签 统计

http-proxy ×1

javascript ×1

node.js ×1

proxy ×1

request ×1