使用代理请求不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用代理请求不起作用相关的知识,希望对你有一定的参考价值。

我试图刮一个网站,我在python中使用Tor模块生成代理,然后使用请求模块抓取网站。但是,具有代理的请求模块由网站识别并返回api页面(带有显示某些api信息的消息的html)。但是,当我使用没有代理的请求(使用我的原始IP地址)时,我得到了适当的响应。我的问题是:网站如何正确识别来自代理的呼叫必须被阻止,并且必须接受原始IP(我当前的IP)。

import requests

from stem import Signal
from stem.control import Controller
def renew_connection():
    with Controller.from_port(port=9051) as controller:
        controller.authenticate(password="my_password")
        controller.signal(Signal.NEWNYM)
proxies_http = {
'http': 'http://127.0.0.1:8118'
}
url = 'http://www.websitename.com' #### Not showing real address
page_with_proxy = requests.get(url , headers=random_header , proxies = proxies_http , timeout = 5)

page = requests.get(url , headers=random_header , proxies = None , timeout = 5)

在这里page_with_proxy有一些api信息(得到一些链接并注册api),但page(其中proxies == None)有适当的网页信息与所有HTML细节(我能够找到所有的xpaths)。有没有办法绕过这个,或者如果使用代理,网站如何轻易理解请求?

答案

许多网站明确地阻止来自tor节点(以及其他代理和/或vpn服务)的访问,或者至少需要某种额外的验证。它们通常通过将请求的IP地址与已知的tor出口节点列表进行匹配来实现此目的。

除了不通过代理服务传递您的请求之外,还没有一个好的解决方法。

以上是关于使用代理请求不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用代理请求不起作用

从片段替换片段时,onRequestPermissionsResult 回调不起作用

片段 getActivity 不起作用

Javascript代码片段在drupal中不起作用

替换或删除后台堆栈上现有片段的代码不起作用

Webpack 开发服务器代理路由器选项不起作用