您好,登錄后才能下訂單哦!
這篇文章主要講解了“爬蟲中的Proxy-Tunnel是如何自主切換IP的”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“爬蟲中的Proxy-Tunnel是如何自主切換IP的”吧!
在采集數據的過程這歐中我們經常會遇到這樣的問題,目標網站需要登錄,獲取數據的兩個請求在一個IP下完成,這時我們就只需對這組請求設置相同Proxy-Tunnel。例如:Proxy-Tunnel: 12345, 該組請求在代理有效期內使用相同的代理IP。這就是億牛云的Proxy-Tunnel自主切換IP,該模式適合一些需要登陸、Cookie緩存處理等爬蟲需要精確控制IP切換時機的業務。 爬蟲程序可以通過設置HTTP頭Proxy-Tunnel: 隨機數, 當隨機數相同時,訪問目標網站的代理IP相同。
#! -*- encoding:utf-8 -*- import urllib2 import random import httplib class HTTPSConnection(httplib.HTTPSConnection): def set_tunnel(self, host, port=None, headers=None): httplib.HTTPSConnection.set_tunnel(self, host, port, headers) if hasattr(self, 'proxy_tunnel'): self._tunnel_headers['Proxy-Tunnel'] = self.proxy_tunnel class HTTPSHandler(urllib2.HTTPSHandler): def https_open(self, req): return urllib2.HTTPSHandler.do_open(self, HTTPSConnection, req, context=self._context) # 要訪問的目標頁面 targetUrlList = [ "https://httpbin.org/ip", "https://httpbin.org/headers", "https://httpbin.org/user-agent", ] # 代理服務器(產品官網 www.16yun.cn) proxyHost = "t.16yun.cn" proxyPort = "31111" # 代理驗證信息 proxyUser = "username" proxyPass = "password" proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % { "host": proxyHost, "port": proxyPort, "user": proxyUser, "pass": proxyPass, } # 設置 http和https訪問都是用HTTP代理 proxies = { "http": proxyMeta, "https": proxyMeta, } # 設置IP切換頭 tunnel = random.randint(1, 10000) headers = {"Proxy-Tunnel": str(tunnel)} HTTPSConnection.proxy_tunnel = tunnel proxy = urllib2.ProxyHandler(proxies) opener = urllib2.build_opener(proxy, HTTPSHandler) urllib2.install_opener(opener) # 訪問三次網站,使用相同的tunnel標志,均能夠保持相同的外網IP for i in range(3): for url in targetUrlList: r = urllib2.Request(url) print(urllib2.urlopen(r).read())
感謝各位的閱讀,以上就是“爬蟲中的Proxy-Tunnel是如何自主切換IP的”的內容了,經過本文的學習后,相信大家對爬蟲中的Proxy-Tunnel是如何自主切換IP的這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。