1. 一個關於pythonrequests和ssl證書的問題
在面對如何使用 Python 爬蟲翻牆獲取全站 HTTPS 的網站,如 Facebook 等,時,一個普遍存在的問題是 Python2 不支持 SNI 功能。然而,這里有兩種解決辦法。
最直接的方法是關閉 SSL 驗證:
這可以通過在使用 requests 庫之前,添加相應的代碼來實現:
同時,若想讓 Python2 支持 SNI 功能,可以採取以下步驟:
首先,使用 pip 安裝必要的依賴:
接著,在使用 urllib3 庫(即在使用 requests 庫之前),插入以下代碼:
2. pythonrequests如何將第一個請求得到的cookie通過post
在 Python 中使用 requests 庫進行網路請求時,若需在多個請求間共享 Cookie,可藉助 requests.Session 對象實現。這樣,首次請求所獲取的 Cookie 將在後續請求中自動傳遞。以下是修改後代碼示例:
首先,導入所需的 requests 庫:
python
import requests
接著,創建一個 Session 對象,並通過首次請求獲取 Cookie:
python
with requests.Session() as s:
s.get('http://example.com') # 替換為實際網址
r = s.post('http://example.com/submit_form', data={'key': 'value'})
在此代碼中,使用 `requests.Session()` 創建會話對象 `s`。通過 `s.get()` 方法發送 GET 請求獲取初始頁面內容,並自動保存響應中的 Cookie。然後,通過 `s.post()` 方法發送 POST 請求,並將先前獲取的 Cookie 一並傳遞。此過程無需顯式添加 Cookie,`requests.Session` 已自動處理。
通過這種方式,首次請求得到的 Cookie 會在後續請求中自動應用,簡化了代碼並提高了請求間數據傳遞的便利性。這種方法尤其適用於需要在多個請求間共享狀態或認證信息的場景。