【问题标题】:Python Requests module - proxy not workingPython 请求模块 - 代理不工作
【发布时间】:2016-08-15 19:00:07
【问题描述】:

我正在尝试使用 python 请求连接到网站,但不是使用我的真实 IP。于是,我在网上找了一些代理,写了这段代码:

import requests

proksi = {
    'http': 'http://5.45.64.97:3128'
}

x = requests.get('http://www.whatsmybrowser.org/', proxies = proksi)
print(x.text)

当我得到输出时,代理简单不起作用。站点返回我的真实 IP 地址。我做错了什么?谢谢。

【问题讨论】:

    标签: python proxy python-requests


    【解决方案1】:

    答案很简单。虽然它是代理服务,但不能保证 100% 匿名。当你通过代理服务器发送 HTTP GET 请求时,你的程序向代理服务器发送的请求是:

    GET http://www.whatsmybrowser.org/ HTTP/1.1
    Host: www.whatsmybrowser.org
    Connection: keep-alive
    Accept-Encoding: gzip, deflate
    Accept: */*
    User-Agent: python-requests/2.10.0
    

    现在,当代理服务器将此请求发送到实际目的地时,它会发送:

    GET http://www.whatsmybrowser.org/ HTTP/1.1
    Host: www.whatsmybrowser.org
    Accept-Encoding: gzip, deflate
    Accept: */*
    User-Agent: python-requests/2.10.0
    Via: 1.1 naxserver (squid/3.1.8)
    X-Forwarded-For: 122.126.64.43
    Cache-Control: max-age=18000
    Connection: keep-alive
    

    如您所见,它将您的 IP(在我的情况下为 122.126.64.43)抛出 HTTP 标头:X-Forwarded-For,因此网站知道该请求是代表 122.126.64.43 发送的

    阅读更多关于这个标题的信息:https://www.rfc-editor.org/rfc/rfc7239

    如果您想托管自己的 squid 代理服务器并希望禁用设置 X-Forwarded-For 标头,请阅读:http://www.squid-cache.org/Doc/config/forwarded_for/

    【讨论】:

      猜你喜欢
      • 2019-05-12
      • 1970-01-01
      • 2014-08-03
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多