使用代理请求不起作用

Posted

技术标签:

【中文标题】使用代理请求不起作用【英文标题】:Using proxy with request not working 【发布时间】:2018-06-05 07:34:16 【问题描述】:

我正在尝试抓取一个网站,我在 python 中使用 Tor 模块生成代理,然后使用 requests 模块抓取该网站。但是,带有代理的请求模块由网站识别并返回一个 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 详细信息(我能够找到所有 xpath) .有没有办法绕过这个,或者如果使用代理,网站如何轻松理解请求?

【问题讨论】:

【参考方案1】:

许多网站要么明确阻止来自 tor 节点(和其他代理和/或 *** 服务)的访问,要么至少需要某种额外的验证。他们通常通过将请求的 ip 地址与已知的 Tor 出口节点列表相匹配来做到这一点。

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

【讨论】:

也就是说,我们无法绕过这些。没有黑客或工作环境。

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

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

使用 react-scripts 代理 websocket 不起作用

为啥代理在浏览器中不起作用(NuxtJS+Axios)?

带有反向代理 Nginx 服务器和 nodejs 的 CORS 将不起作用

为啥 webpack 代理不起作用(Access-Control-Allow-Origin 错误)?

Zuul 代理在 Tomcat vai SpringBootServlet 上不起作用