更改 urllib2 的 IP 地址

Changing the IP address for urllib2

我正在尝试更改我的简单 python 代码连接到我的网站的 IP 地址。

import urllib.request  as urllib2
# change of IP address
page = urllib2.urlopen("http://example.com/").read()

是否有 python 库可以轻松启用它?以便连接到站点的用户显示不同的位置。

例如,我想从使用 IP 地址 118.69.140.108 和端口 53281 的站点抓取本地新闻。

怎么做,什么库会启用它?

尝试使用以下代码:

import urllib.request  as urllib2

proxy = urllib2.ProxyHandler({"http": "118.69.140.108:53281"})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
page = urllib2.urlopen("http://example.com/")

或者,您可以使用 requests 库,这样更容易:

import requests

url = "http://example.com/"
page = requests.get(url, proxies={"http":"118.69.140.108:53281"})

希望这对您有所帮助

这是一个没有错误处理、重新连接的简单示例。我希望我写的是正确的答案 ;)

import urllib.request  as urllib2


http_proxy = {
    'user': ''
    , 'passwd': ''
    , 'server': '67.205.151.211'
    , 'port': '3128'
}

# change of IP address
page = urllib2.urlopen("http://httpbin.org/ip").read()
print(page)

# http://username:password@someproxyserver.com:1337
http_proxy_full_auth_string = "http://%s:%s@%s:%s" % (http_proxy["user"],
                                                      http_proxy["passwd"],
                                                      http_proxy["server"],
                                                      http_proxy["port"])
proxy_handler = urllib2.ProxyHandler({"http": http_proxy_full_auth_string,
                                      "https": http_proxy_full_auth_string})

opener = urllib2.build_opener(proxy_handler)
postDatas = {"User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
             "Cache-Control": "no-cache",
             "Pragma": "no-cache"}

request = urllib2.Request("http://httpbin.org/ip", None, postDatas)

connection = opener.open(request, timeout=10)
page = connection.read()
# except Exception as err:
#     # Si il y a une erreur de connexion (timeout etc.)
#     result.add_error(err, "%s ne repond pas" % url)
# else:
connection.close()
print(page)