proxy代理 (通用代理)
import requests url='http://docs.python-requests.org/en/master/' proxies={ 'http':'127.0.0.1:8080', 'https':'127.0.0.1:8080' } r = requests.get(url,proxies=proxies) print(r.status_code)
proxy代理 (私密代理)
'http':'sea:123@127.0.0.1:8080',
import requests url='http://docs.python-requests.org/en/master/'
user="sea"
password="123" proxies={ 'http':user+':'+password+'@127.0.0.1:8080', 'https':user+':'+password+'@127.0.0.1:8080' } r = requests.get(url,proxies=proxies) print(r.status_code)
cookies 參考:https://www.cnblogs.com/ddddfpxx/p/8624715.html
利用POST發送用戶名、密碼及驗證碼。這里的驗證碼沒有進行識別,只好先讀取驗證驗圖片,手動輸入。
獲取cookies:
def GetCookie(): imgUrl='http://***/authcode.php' s=requests.session() print(s.cookies.get_dict())#先打印一下,此時一般應該是空的。 res=s.get(imgUrl,stream=True) im=Image.open(BytesIO(res.content)) im.show() code=input() loginUrl='http://***/admin_loginCheck.php' postData={'pname':'admin','password':'***','validateCode':code} rs=s.post(loginUrl,postData) c=requests.cookies.RequestsCookieJar()#利用RequestsCookieJar獲取 c.set('cookie-name','cookie-value') s.cookies.update(c) print(s.cookies.get_dict())
這種獲取cookies后,然后帶cookies 請求, 時長並沒有什么用
推薦這種: 先登錄獲取cookies 然后通過帶上cookies訪問:
第2種 先發送post請求,獲取cookie,帶上cookie請求登陸之后的頁面 這里要用到一個seesion類,seesion 實例具有的方法和requests一樣,但是 seesion具有保持功能, 就類似瀏覽器輸入一次密碼之后,會自動保留cookie seesion = requests.seesion() seesion.post(url, data, headers) # 服務器設置在本地的cookie會保存在本地 seesion.get(url) # 會帶上之前保存在seesion中的cookie,能夠請求成功 這種方法要先提交自己的賬號密碼,並且要找到提交的地址。那么如何找到提交地址呢? 第一種方式:找form表單的action屬性 原文鏈接:https://blog.csdn.net/williamgavin/article/details/81390014
import requests headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"} seesion = requests.session() # 因為人人網有from表單,所以可以直接找地址:http://www.renren.com/PLogin.do # 如果沒有的就要抓包了 post_url = "http://www.renren.com/PLogin.do" # form表單里面直接找到的 #post_url = "http://www.renren.com/ajaxLogin/login? # 用戶名作為鍵, 真正的密碼作為值 模擬登陸 post_data = {"email":"xxxx", "password":"xxxx"} seesion.post(post_url, headers = headers, data = post_data) url = "再次請求登陸的url" response = seesion.get(url, headers = headers) with open("renren3.html", "w", encoding="utf-8") as f: f.write(response.content.decode()) 原文鏈接:https://blog.csdn.net/williamgavin/article/details/81390014