温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么读取Cookie

发布时间:2022-09-27 11:44:11 来源:亿速云 阅读:159 作者:iii 栏目:web开发

本篇内容主要讲解“怎么读取Cookie”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么读取Cookie”吧!

获取cookie的核心目的无非就是实现登陆,一般来说我们实现请求大致也有两种方式,第一种是selenium,第二种是包含requests,urllib等的其他类型,那么cookie的获取也是针对这样的结构而言的。

1.利用selenium+phantomjs无界面浏览器的形式访问网站,再获取cookie值:

(当然这里也包括+webdriver)

# 导入模块 from selenium import webdriver driver=webdriver.PhantomJS() url="https://et.xiamenair.com/xiamenair/book/findFlights.action?lang=zh&tripType=0&queryFlightInfo=XMN,PEK,2018-01-15" driver.get(url) #接下来注意了,要开始获取cookie了. # 获取cookie列表 cookie_list=driver.get_cookies()#这里主要是使用自带的get_cookies方法 # 格式化打印cookie for cookie in cookie_list:     cookie_dict[cookie['name']]=cookie['value'] print(cookie_dict)

有些人说,最后打印的话,为什么还要弄个循环呢,那么我就给你看看cookie的源格式,这也是为什么要取cookie_list的原因

[{‘domain’: ‘.et.xiamenair.com’, ‘expiry’: 1577686388, ‘httpOnly’: False, ‘name’: ‘_dc_gtm_UA-96517318-3’, ‘path’: ‘/’, ‘secure’: False, ‘value’: ‘1’}, {‘domain’: ‘.et.xiamenair.com’, ‘expiry’: 1577772728, ‘httpOnly’: False, ‘name’: ‘_gid’, ‘path’: ‘/’, ‘secure’: False, ‘value’: ‘GA1.3.10695887.1577686328’}, {‘domain’: ‘.et.xiamenair.com’, ‘expiry’: 1640758328, ‘httpOnly’: False, ‘name’: ‘_ga’, ‘path’: ‘/’, ‘secure’: False, ‘value’: ‘GA1.3.346851281.1577686328’}, {‘domain’: ‘et.xiamenair.com’, ‘expiry’: 1593238326.401786, ‘httpOnly’: False, ‘name’: ‘Webtrends’, ‘path’: ‘/’, ‘secure’: False, ‘value’: ‘221.194.139.166.1577686326367810’}, {‘domain’: ‘.et.xiamenair.com’, ‘httpOnly’: False, ‘name’: ‘Hm_lpvt_a0f83bbc1d09b6e5a33928301f402485’, ‘path’: ‘/’, ‘secure’: False, ‘value’: ‘1577686328’}, {‘domain’: ‘.xiamenair.com’, ‘expiry’: 1585462327, ‘httpOnly’: False, ‘name’: ‘_gcl_au’, ‘path’: ‘/’, ‘secure’: False, ‘value’: ‘1.1.1071047259.1577686328’}, {‘domain’: ‘.et.xiamenair.com’, ‘expiry’: 1609222327, ‘httpOnly’: False, ‘name’: ‘Hm_lvt_a0f83bbc1d09b6e5a33928301f402485’, ‘path’: ‘/’, ‘secure’: False, ‘value’: ‘1577686328’}, {‘domain’: ‘et.xiamenair.com’, ‘httpOnly’: False, ‘name’: ‘JSESSIONID’, ‘path’: ‘/xiamenair’, ‘secure’: False, ‘value’: ‘fITPgukOvdHrSaj8Jyo25z+Q.mfb2cServer3’}]

看明白了吧,cookie本来就是这个格式的

就是一个列表,内含n多个字典,字典里面还有各个字段,比如domain,expiry,httpOnly,name,path,secure,value等

第一种咱们看了,接下来看第二种

第二种相对来说要多点,我们根据不同的请求方法来:

但是有一个共同点,基本都是使用cookiejar来做

1.首先来说urllib,我们只针对python3

# python3.6环境 from urllib import request from http import cookiejar if __name__ == '__main__':     #1. 声明一个CookieJar对象实例来保存cookie,先构建一个容器     cookie = cookiejar.CookieJar()         # 2.利用urllib.request库的HTTPCookieProcessor对象来创建cookie处理器,也就CookieHandler     handler=request.HTTPCookieProcessor(cookie)     # 通过CookieHandler创建opener     opener = request.build_opener(handler)         # 3.此处的open方法打开网页     response = opener.open('http://www.baidu.com')     # 打印cookie信息     for item in cookie:         print('Name = %s' % item.name)         print('Value = %s' % item.value)

有人会说,如果我想看cookie的具体东西,我没打印的情况下,我怎么知道cookie的属性有哪些,这确实,说的没毛病,那么我再来一招:

以上面为例,cookiejar获取的其实是一个对象列表,列表可以遍历,但是对象不可以遍历,那怎么办呢?

for i in cookie:

print(“我是k”, i.dict.items())

这样来,我们对cookiejar进行遍历,得到对象i,那么再对对象i进行字典化的读取,就可以了

2.再来,我们再来说说requests请求方式:

一般携带Cookie请求有三种方式:

三种Cookie请求方式

第一种:cookie放在headers中

首先找到登陆之后的Cookie和User-Agent,然后将User-Agent和Cookie复制到程序里面,如下: import requests url = "https://blog.csdn.net/williamgavin" headers = {"User_Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",     "Cookie" : "这个还是算了吧,用你们自己的博客试 ^-^ " } response = requests.get(url, headers = headers ) with open("csdn.html", "w", encoding="utf-8") as f:     f.write(response.content.decode());

第二种:cookie字典传给cookies参数

这里以请求人人网为例:

找到对应的cookie和User-Agent import requests url = "http://www.renren.com/967272361/profile" headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36", } # 不带上Cookie就访问不了这个页面 cookie = "anonymid=jk63khrk-y97r4p; _r01_=1; ln_uact=mr_mao_hacker@163.com; ln_hurl=http://hdn.xnimg.cn/photos/hdn421/20180720/1740/main_JAWQ_0aa000000ceb195a.jpg; _ga=GA1.2.273332130.1532825428; depovince=HUN; JSESSIONID=abcE5k0CiAJDc9ESVEcuw; ick_login=026ba348-e4e9-4871-9ce3-5868b95cfdd3; first_login_flag=1; loginfrom=syshome; wp_fold=0; BAIDU_SSP_lcr=https://www.baidu.com/link?url=VRx_HKUd53I5rYWZHvrQ9VVLotqST6-jtaZDlscFYCO&wd=&eqid=e957aec400037928000000065b64fcab; ick=64518f30-9a22-47df-b3c3-4114f185c3c6; t=8fcf47068763c279eea2620b51b7a3311; societyguester=8fcf47068763c279eea2620b51b7a3311; id=967272361; xnsid=fd736c63; jebecookies=3f9a3853-3371-4857-8268-308d663ca146|||||; jebe_key=19041c4e-4d38-4dc1-bfb9-124b81afae61%7C33b1d8f602cf6dd5a9834fe6f2bf97f2%7C1533346094265%7C1%7C1533346099750" # 将上面哪个cookie转化成字典类型 cookie_dict = {i.split("=")[0]:i.split("=")[-1] for i in cookie.split("; ")} response = requests.get(url, headers = headers, cookies = cookie_dict) with open("renren2.html", "w", encoding="utf-8") as f:     f.write(response.content.decode())

第三种 先发送post请求,获取cookie,带上cookie请求登陆之后的页面

具有保持功能, 就类似浏览器输入一次密码之后,会自动保留cookie seesion = requests.seesion() seesion.post(url, data, headers) # 服务器设置在本地的cookie会保存在本地 seesion.get(url) # 会带上之前保存在seesion中的cookie,能够请求成功

到此,相信大家对“怎么读取Cookie”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI