python爬蟲,自動登錄

使用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))

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章