使用requests模塊
使用requests.session()創建一個會話。然後使用會話進行鏈接請求。如果把cookies或headers放進請求參數中,在session進行第一次請求後,這些參數不會自動添加到後續的請求中。
因此,爲了是參數在session中共用,應該將其添加到session上。
session = requests.session()
session.cookies = get_cookiejar()
session.headers = {}
cookies需要是 requests.cookies.RequestsCookieJar。
獲取一個已經登錄網站的cookie
import requests
import browser_cookie3
def get_cookiejar_from_browser(domain):
cj = browser_cookie3.chrome(domain_name=domain)
cookiejar = requests.cookies.RequestsCookieJar()
for c in cj:
cookiejar.set(c.name, c.value, domain=c.domain, path=c.path)
return cookiejar
有一種方法,直接copy請求頭,然後將其附着到session上,這樣只能訪問你copy的那個網頁,cookies並不會真正的被設置。
requests設置代理:
import requests
proxies = {
"http": "http://10.10.1.10:3128",
"https": "http://10.10.1.10:1080",
}
requests.get("https://www.baidu.com/", proxies=proxies)
https 證書驗證:
import requests
url = 'https://kyfw.12306.cn/otn/leftTicket/init'
# 關閉證書驗證
r = requests.get(url, verify=False)
print(r.status_code)
# 開啓證書驗證
# r = requests.get(url, verify=True)
# 設置證書所在路徑
# r = requests.get(url, verify= '/path/to/certfile')
使用cookie:
import requests
url = 'https://movie.douban.com/'
r = requests.get(url)
# r.cookies是RequestsCookieJar對象
print(r.cookies)
mycookies = r.cookies
# RequestsCookieJar轉換字典
cookies_dict = requests.utils.dict_from_cookiejar(mycookies)
print(cookies_dict)
# 字典轉換RequestsCookieJar
cookies_jar = requests.utils.cookiejar_from_dict(cookies_dict, cookiejar=None, overwrite=True)
print(cookies_jar)
# 在RequestsCookieJar對象中添加Cookies字典
print(requests.utils.add_dict_to_cookiejar(mycookies, cookies_dict))