cookie是什么?

Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。在web开发中,经常需要对会话进行跟踪。因为http请求是无状态协议,也就是说仅仅通过http,服务器无法区分出不同的客户端。也就是说你访问这个页面之后,在刷新一次,没有cookie的话,服务器完全不知道现在刷新的和刚才访问的是同一用户,它都当作是新的请求来处理,所以这就带来了一定的不方便。特别是需要登录的页面,总不能每个页面都登录一次,每刷新一次就要登录一次吧。也就是说需要某种机制来增强http协议,使得服务器可以区分出这是同一个客户端。而这个机制就是cookie。

cookie如何工作

当你第一次访问某个网站的时候,服务器会给你颁发一个特定的cookie,之后你每次访问这个站点,你发送的请求头里都会带上相应的cookie,这样服务器便知道这俩请求是同一个客户发送的。

第一次访问某个网站,服务器会给你个cookie,response headers里有一个set-cookie 字段,就是告诉浏览器,把这个cookie放到本地,以后访问我这个站点的时候,都把这个cookie带上,我就知道你是谁了。

然后刷新页面,相当于第二次访问

会发现,第二次访问的时候,response headers里边已经没有这个set cookie字段了,但是request headers 里多了一个cookie字段,而且仔细观察的话,你会发现这个值恰恰就是刚刚response headers set cookie字段的值。其实只要你不关闭浏览器,在打开一个窗口你会发现这个cookie值还是这个,默认情况下,关掉浏览器或者换一个浏览器,服务器就认为这是一个新的会话了。而cookie的保存时间是可以设定的,你会发现知乎,简书等网站,只要你登陆成功之后,即使关闭浏览器,过几天之后还是登陆状态,说明这个cookie是一个持久的cookie,保存时间比较长。

从上述俩张图,可以发现cookie是实实在在存在于http请求和响应报头的。

如何用python实现cookie登陆

既然大概明白了cookie机制,我们就尝试用cookie进行登陆。以登陆知乎为例,如果你用账号密码登陆,验证码是个大问题,起码目前对我来说是这样,所以你先用浏览器手动登陆知乎。右键进入开发者选项,network,选择www.zhihu.com,查看请求头信息。

然后把cookie复制下来,可以开始写代码了。import requests

from bs4 import BeautifulSoup

headers={

'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100

Safari/537.36',

'Referer':'https://www.zhihu.com/',

'Cookie':'q_c1=36160dc56c7d4cf3af14559e4ea69ed1|1508646188000|1508646188000; q_c1=e1adb01bc55343c0b61e0d4e08f73344|

1508646188000|1508646188000; _zap=7926df57-02e2-45a7-9244-85ff9156e100; d_c0="ABACCuGPkwyPTgYydZLhc0-YwrldDeOJ3_w=|

1508841150"; r_cap_id="NjE4YWExOTIxM2YwNGVlODhmNjc5ZDE3MGQyNWM0MjM=|1508844066|

4207fbc525684854cb948b64e10a3c693a999056"; cap_id="YzRhYmM5YTJhZWM4NGFiYWExOGYzOTU1ZjczMGMyOGI=|1508844066|

a828518b3a798b99e4ea0cd6a54f25dc31d70c6d"; z_c0=Mi4xTk5WX0FnQUFBQUFBRUFJSzRZLVREQmNBQUFCaEFsVk5zM0RjV2dDWEhfTS16TmV1

dk80dTVZSnpqOGNpX3NpblF3|1508844211|c34b0d4374988f038beedfa2cbcd48e2271a0c66; __utma=51854390.9389312.1508841151.

1508841151.1508843285.2; __utmz=51854390.1508841151.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utmv=51854390.

100-1|2=registration_date=20160120=1^3=entry_date=20160120=1; aliyungf_tc=AQAAAB0uB1XAWQIAE7YKcClINzXafvOI;

_xsrf=3283d7f2-8e92-4b94-9b0e-1105c2d069d0'

}

res=requests.get("https://www.zhihu.com/search?type=content&q=java",headers=headers)

soup=BeautifulSoup(res.text,'html.parser')

n=soup.select(".list")[0].select(".item")

可以发现,已经抓到了本来需要登陆才能看的页面,而如果去掉请求头里的cookie字段,会帮你重定向到登陆页面。

python cookies是什么_Python获取cookie有什么用相关推荐

  1. python获取cookie值的方法_Python获取Cookie、设置Cookie的N种方法

    方法一通过python的requests包: import requests url = "https://fanyi.baidu.com" res = requests.get( ...

  2. python cookies过期_Python3中关于cookie的创建与保存

    1.cookie的作用 cookie 是指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据,就像有些网站上的一些数据是需要登录后才能看得到,那么想抓取某个页面内容,就需要用 ...

  3. python提取矩阵元素_python获取array中指定元素的示例

    python获取array中指定元素的示例 对于array,如2-D的array,如何取指定元素 设array为3*10的shape s = array([[ 0, 1, 2, 3, 4, 5, 6, ...

  4. python cookies是什么_Python网络爬虫之Cookie技术(一)

    原标题:Python网络爬虫之Cookie技术(一) 当我们访问一个需要用户名和密码登录的网站(例如某宝)时,只要我们注册好并成功登录后,下次访问该网站时,网站就会记住我们的登录信息,而无需重新登录. ...

  5. python cookies是什么_Python中的Cookie模块有什么功能?

    Cookie 模块,顾名思义,就是用来操作Cookie的模块. Cookie这块小蛋糕,玩过Web的人都知道,它是Server与Client保持会话时用到的信息 切片. Http协议本身是无状态的,也 ...

  6. python爬虫cookie_python爬虫怎么获取cookie

    详细内容 Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密). 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容,登 ...

  7. python读取数据库导出文件_Python 获取 datax 执行结果保存到数据库的方法

    执行 datax 作业,创建执行文件,在 crontab 中每天1点(下面有关系)执行: 其中 job_start 及 job_finish 这两行记录是自己添加的,为了方便识别出哪张表. #!/bi ...

  8. python数据展示平台_Python获取各大地图平台经纬度数据,哪家的数据最准确?

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于菜J学Python ,作者J哥 前言 不知道大家会在什么场合使用地图 ...

  9. python解析apk文件_Python获取apk文件URL地址实例

    Python获取apk文件URL地址实例 更新时间:2013年11月01日 10:22:39   作者:   我要评论 需要提取apk文件的特定URL地址的朋友可以看一下这个代码实例. 工作中经常需要 ...

最新文章

  1. 基于深度学习的目标检测综述
  2. 在Ubuntu 14.04 64bit上使用dig
  3. Flutter实战(一)写一个天气查询的APP
  4. 从零构建vue+webpack (一)
  5. scanner一次输入多行_记一次项目复盘,技术盘点(易忽略的细节)
  6. Win2003_IIS6服务器设置排错解答
  7. 从ca提取keystore_从keystore(jks)文件中提取私钥
  8. 微信公众平台中的openid是什么
  9. 计算机网络中TCP属于,【填空题】TCP/IP协议将计算机网络的结构划分为应用层、传输层、网络互连层等4个层次,其中IP协议属于【1】层。...
  10. nagios监控配置错误汇总
  11. 守护你一生-守护线程(Java)
  12. Django之ModelForm详解
  13. 2020-06-28
  14. Hive学习笔记(二)——数据模型
  15. 在free bsd上跑JMeter 的 plugin PerfMon Server Agent
  16. 163的在线编辑器简析和配置使用
  17. Linux下opengl性能更高,OpenGL超级宝典学习笔记——性能比较
  18. JavaScript—— 常见网页特效
  19. 【vn.py】源码解析之 Dual Thrust 策略
  20. VB DoEvents用法

热门文章

  1. halcon程序安装破解与VC6.0结合
  2. 阿里云 ACM + Springboot 整合
  3. 如何使用wifi模块搭建农业物联网防治马铃薯晚疫病?
  4. PHP最好的语言的梗的笑话
  5. 哪一款蓝牙耳机音质最好?2023发烧级音质蓝牙耳机推荐
  6. TikTok跨境:TikTok搬运视频,怎么才不会识别出搬运?
  7. 【嵌入式蓝桥杯】解决LED和LCD引脚冲突的方法
  8. 在 .NET 应用程序中运行 JavaScript
  9. 关于将Java编译过的.class文件打成jar可执行文件/JAR详解
  10. 怎么制作书单视频?一款好用的制作软件教程