requests 模組
import requests
""" # 1. 方法 requests.get requests.post requests.put requests.delete ... requests.request(method='POST') """ # 2. 引數 """ 2.1 url 2.2 headers 2.3 cookies 2.4 params 2.5 data,傳請求體 requests.post( ..., data={'user':'alex','pwd':'123'} ) GET /index http1.1\r\nhost:c1.com\r\n\r\nuser=alex&pwd=123 2.6 json,傳請求體 requests.post( ..., json={'user':'alex','pwd':'123'} ) GET /index http1.1\r\nhost:c1.com\r\nContent-Type:application/json\r\n\r\n{"user":"alex","pwd":123} 2.7 代理 proxies # 無驗證 proxie_dict = { "http": "61.172.249.96:80", "https": "http://61.185.219.126:3128", } ret = requests.get("https://www.proxy360.cn/Proxy", proxies=proxie_dict) # 驗證代理 from requests.auth import HTTPProxyAuth proxyDict = { 'http': '77.75.105.165', 'https': '77.75.106.165' } auth = HTTPProxyAuth('使用者名稱', '密碼') r = requests.get("http://www.google.com",data={'xxx':'ffff'} proxies=proxyDict, auth=auth) print(r.text) ----------------------------------------------------------------------------------------- 2.8 檔案上傳 files # 傳送檔案 file_dict = { 'f1': open('xxxx.log', 'rb') } requests.request( method='POST', url='http://127.0.0.1:8000/test/', files=file_dict ) 2.9 認證 auth 內部: 使用者名稱和密碼,使用者和密碼加密,放在請求頭中傳給後臺。 - "使用者:密碼" - base64("使用者:密碼") - "Basic base64("使用者|密碼")" - 請求頭: Authorization: "basic base64("使用者|密碼")" from requests.auth import HTTPBasicAuth, HTTPDigestAuth
ret = requests.get('https://api.github.com/user', auth=HTTPBasicAuth('wupeiqi', 'sdfasdfasdf')) print(ret.text) 2.10 超時 timeout # ret = requests.get('http://google.com/', timeout=1) # print(ret) # ret = requests.get('http://google.com/', timeout=(5, 1)) # print(ret) 2.11 允許重定向 allow_redirects ret = requests.get('http://127.0.0.1:8000/test/', allow_redirects=False) print(ret.text) 2.12 大檔案下載 stream from contextlib import closing with closing(requests.get('http://httpbin.org/get', stream=True)) as r1: # 在此處理響應。 for i in r1.iter_content(): print(i) 2.13 證書 cert - 百度、騰訊 => 不用攜帶證書(系統幫你做了) - 自定義證書 requests.get('http://127.0.0.1:8000/test/', cert="xxxx/xxx/xxx.pem") requests.get('http://127.0.0.1:8000/test/', cert=("xxxx/xxx/xxx.pem","xxx.xxx.xx.key")) 2.14 確認 verify =False """
requests.get('http://127.0.0.1:8000/test/', cert="xxxx/xxx/xxx.pem")