爬蟲中的TCP請求自動切換ip

deeply發表於2021-09-09

作為爬蟲工作者,在日常採集資料的過程中我們會遇到需要使用tcp請求,並且每個TCP請求自動切換ip,意思是指爬蟲代理為爬蟲程式發出的每個TCP請求隨機提供一個代理IP,同一個TCP會話中IP不變。在遇到需要這樣的情況下我們可以透過設定Proxy-Connection: Keep-Alive或Connection: Keep-Alive可以保持同一個Session代理IP不變。

在目標網站需要登入,獲取資料的兩個請求在一個IP下,只需保證該組請求在一個TCP(Keep-Alive)會話下, 該組請求在代理有效期內使用相同的代理IP。程式碼參考如下:

#! -*- encoding:utf-8 -*-  
  import requests 
  import random 
  import requests.adapters
  # 要訪問的目標頁面  
  targetUrlList = [        "",  
  "",  
  "",    ] 
   # 代理伺服器(產品官網 )   
  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,    }
   # 訪問三次網站,使用相同的Session(keep-alive),
    均能夠保持相同的外網IP   
     s = requests.session()  
   # 設定cookie    # cookie_dict = {"JSESSION":"123456789"} 
    # cookies = requests.utils.cookiejar_from_dict(cookie_dict, 
    cookiejar=None, overwrite=True)   
     # s.cookies = cookies   
      for i in range(3):   
       for url in targetUrlList:  
       r = s.get(url, 
        proxies=proxies)  
         print r.text


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1978/viewspace-2797909/,如需轉載,請註明出處,否則將追究法律責任。

相關文章