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))
如您感觉文章有用,可扫码捐赠本站!(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.
