python requests增加cookie的方法
一、有关cookie
我之前写过一篇博文《python pycurl模块》,在其中有提到pycurl 有将cookie保存在该文件中,并允许跟踪来源,其他请求会直接调用该cookie文件。这个适用于大多数的应用场景,不过有时候新的cookie内容并不会在响应头中记录到cookie文件中,比如session key之类的,其一般会在响应正文里。在直接后面的请求时,需要手动的加入到请求的cookie头信息里。本篇就结合requsts模块,了解下自定义cookie信息。
先科普下cookie的概念,Cookie它是在客户端访问Web服务器时,服务器在客户端硬盘上存放的信息,服务器可以根据Cookie来跟踪客户状态。具体见下图:
二、requests模块中cookie的使用
1、查看响应cookie
1>>> url = 'https://www.baidu.com'
2>>> r = requests.get(url)
3>>> r.cookies.items()
4[('BDORZ', '27315')]
5>>> r.cookies.keys()
6['BDORZ']
7>>> r.cookies.values()
8['27315']
9>>> r.cookies['BDORZ']
10'27315'
2、请求cookie
1>>> url = 'http://httpbin.org/cookies'
2>>> cookies = dict(cookies_are='working')
3>>> r = requests.get(url, cookies=cookies)
4>>> print(r.text)
5{
6 "cookies": {
7 "cookies_are": "working"
8 }
9}
10>>>
3、cookie的跨域访问
Cookie 的返回对象为 RequestsCookieJar,它的行为和字典类似,但接口更为完整,适合跨域名跨路径使用。你还可以把 Cookie Jar 传到 Requests 中:
1>>> jar = requests.cookies.RequestsCookieJar()
2>>> jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
3>>> jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
4>>> url = 'http://httpbin.org/cookies'
5>>> r = requests.get(url, cookies=jar)
6>>> r.text
7'{"cookies": {"tasty_cookie": "yum"}}'
思考一下,在访问http://httpbin.org/elsewhere 时返回的是什么?
三、requests模块自定义cookies实战
使用Cookie访问Web服务器的方式有两种:一种是写在header头部,另一种是插入Cookie参数。
1、使用header头部
1import requests
2url = 'http://200.200.0.7/Java/jviewer.jnlp?EXTRNIP=200.200.0.7&JNLPSTR=JViewer'
3cookies = '''SessionCookie=shfLO755DJlWGV4AkCjSb4jnkBHPXe3J005; Language=ZH; Username=admin;'''
4header = {
5'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Geck
6o) Chrome/53.0.2785.143 Safari/537.36',
7'Connection': 'keep-alive',
8'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
9'Cookie': cookies
10 }
11r = requests.get(url,headers=header)
12print(r.text)
2、直接使用cookies参数
1import requests
2url = 'http://200.200.0.7/Java/jviewer.jnlp?EXTRNIP=200.200.0.7&JNLPSTR=JViewer'
3cookie = '''SessionCookie=shfLO755DJlWGV4AkCjSb4jnkBHPXe3J005; Language=ZH; Username=admin;'''
4r = requests.get(url,cookies=cookie)
5print(r.text)
当然,这里还是支持使用headers的,cookies和headers地起用的方法是:r = requests.get(url,cookies=cookie ,headers=header) 。
更多内容可以参看requests模块官方文档 。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/requests-cookie/6092.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.