会话维持
Session
import requests
#若不用Session, 不能维持同一个会话
requests.get('http://httpbin.org/cookies/set/number/123456789')
r=requests.get('http://httpbin.org/cookies')
print('未使用Session:\n'+r.text)
#使用Session,使用同一会话
s=requests.Session()
s.get('http://httpbin.org/cookies/set/number/123456789')
r=s.get('http://httpbin.org/cookies')
print('使用Session:\n'+r.text)
输出结果
SSL证书验证
当发送HTTP请求时,会检查SSL证书,可以使用verify参数控制是否检查此证书。默认是True,自动验证。
response=requests.get('https://www.12306.cn')
print(response.status_code)
response=requests.get('https://www.12306.cn',verify=False)
print(response.status_code)
from requests.packages import urllib3
urllib3.disable_warnings()#忽略警告
代理设置
大规模且频繁请求,网站可能弹出验证码,或需要登录认证,或直接被封IP。需要设置代理,proxies参数。
proxies={
'http':'http://user:password@10.10.1.10:3128/'
'https':'socks5://user:password@host:port'#pip3 install 'requests[socks]'
}
requests.get("https://www.taobao.com",proxies=proxies)
超时设置
timeout=1 或者timeout=(5,11,30)
身份认证
from requests.auth import HTTPBasicAuth
r=requests.get('http://localhost:5000',auth=('username','password'))
#OAuth认证 pip3 install requests_oauthlib
from requests_oauthlib import OAuth1
auth=OAuth1('YOUR_APP_KEY','YOUR_APP_SECRET','USER_OAUTH_TOKEN','USER_OAUTH_TOKEN_SECRET')
requests.get(url,auth=auth)
Prepared Request
from requests import Request,Session
url='http://httpbin.org/post'
data={
'name':'germey'
}
headers={
'User-Agent':'Mozilla/5.0()'
}
s=Session()
req=Request('POST',url,data=data,headers=headers)
prepped=s.prepare_request(req)
r=s.send(prepped)
print(r.text)