Python爬虫实现Cookie模拟登录

 更新时间:2024年04月10日 16:16:40   作者:万里顾—程  
这篇文章主要介绍了Python爬虫实现Cookie模拟登录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

0.模拟登录原理

模拟登录,一般是网站在浏览器中使用POST请求向后端发送数据请求的过程,响应后的数据一般会设置相关的Session与Cookie标识用户的登录标识。对于前后端分离的项目中,也有可能是加密密钥的token,例如 ,jwt 登录的方式的 token 一般包含时效性,当然cookie 也具备时效性。但是在登录请求的请求头并不用包含,因为这些都是登录后的返回结果的信息,务必注意区分。

1、Cookie模拟登录

现在很多网站需要用户成功登录后才可以查看相关内容。使用Cookie 模拟登录可以很好地解决这种问题。

Cookie 是指某些网站服务器为了辨别用户身份和进行Session跟踪,而储存在用户浏览器上的文本文件,Cookie是一个记录了用户登录状态以及用户属性的加密字符串,Cookie可以保持登录信息到用户下次与服务器的会话。Cookie 以键 / 值对形式存储。

Cookie 验证流程:当用户第一次登陆网站时,服务端会在返回的响应头 Response Headers 中添加 Cookie数据, 浏览器接收到响应头的信息后,会将 Cookie 保存至浏览器本地存储中,当用户再次向该网站发送请求时,请求头中就会携带 Cookie,这样服务器通过读取 Cookie 就能识别登陆用户了。

Cookie在爬虫方面最典型的应用是判定注册用户是否已经登录网站,用户在请求参数中传入Cookie,在发送请求访问url时,会跳过登录界面,跳过登录验证流程,从而直接访问到想要的网站数据。

Cookie 模拟登录使用实例:

注册一个微博账号,登录微博并进入个人主页,使用F12打开浏览器的调试工具,在 Headers 选项中找到请求头Request Headers 中的 Cookie 信息,复制保存。

import urllib.request
import urllib.parse

url = 'https://weibo.com/u/6768120693/home'

#请求头参数
headers = {
    'cookie': 'UPSTREAM-V-WEIBO-COM=35846f552801987f8c1e8f7cec0e2230; _s_tentry=passport.weibo.com; Apache=3550042880907.0825.1657677410065; SINAGLOBAL=3550042880907.0825.1657677410065; ULV=1657677410241:1:1:1:3550042880907.0825.1657677410065:; XSRF-TOKEN=wpUjXoB3U_T8KzDcYBGeQmeg; WBPSESS=dg5zs_KFY81p0FnDKmb34Ti2iJGu9QxJdhMzG8ikVBN-CyoFvr-FTOapET7oPxP0FTRcDR-4ospowpRpkqiE8Gga-FNf9Bekers3TFYG5vxMEBfXahOBmCiJK7XwTPB_GaeInt3uz0W9CfgA545n9SWoyDpY910MV0NogSygO48=; PC_TOKEN=fd99713024; login_sid_t=6d987092eac2182f810741424691738b; cross_origin_proto=SSL; WBStorage=4d96c54e|undefined; wb_view_log=1920*10801; SUB=_2A25Py7HwDeRhGeBJ7VoQ8i7Kwj-IHXVsoKQ4rDV8PUNbmtAKLVPNkW9NRi9nZzdxPj2ym6xf8i-dSCWgSnyp4GVC; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9W5e8Y.xknmxKI8AQq4L07-c5JpX5KzhUgL.FoqNSonpeo5c1Ke2dJLoI0.LxKqL1h5L1KzLxKqL1KqLBK-LxKqL1hnL1K2LxKML1-2L1hBLxK-L1K5L12BLxK-LB-BL1KUT-27t; ALF=1689318688; SSOLoginState=1657782688; wvr=6; wb_view_log_6768120693=1920*10801; webim_unReadCount=%7B%22time%22%3A1657782816028%2C%22dm_pub_total%22%3A0%2C%22chat_group_client%22%3A0%2C%22chat_group_notice%22%3A0%2C%22allcountNum%22%3A40%2C%22msgbox%22%3A0%7D',
    'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.5261 SLBChan/10'
}

request = urllib.request.Request(url=url,headers=headers)
response = urllib.request.urlopen(request)
content = response.read().decode('utf-8')

with open('weibo.html','w',encoding='utf-8') as file:
    file.write(content)

2、Handler处理器

Handler处理器可以定制更高级的请求头,基本的urlopen()方法不支持代理、动态cookie等其他的HTTP/HTTPS高级功能。

Handler处理器使用步骤:

  • 使用Handler处理器(如HTTPHandler或HTTPSHandler)来创建特定功能的处理器对象;
  • 然后通过urllib.request.build_opener()方法使用处理器,构建opener对象;
  • 使用构建的opener对象,调用open()方法发送请求。

使用实例:

import urllib.request

url = 'http://www.baidu.com'

headers = {
    'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.5261 SLBChan/10'
}
#1、获取HTTPHandler处理器对象
http_handler = urllib.request.HTTPHandler()
#获取HTTPSHandler处理器对象
https_handler = urllib.request.HTTPSHandler()

#2、构建opener对象
http_opener = urllib.request.build_opener(http_handler)
https_opener = urllib.request.build_opener(https_handler)

#定制请求
request = urllib.request.Request(url=url,headers=headers)

#3、调用open方法发送请求
http_response = http_opener.open(request)
https_response = https_opener.open(request)

print(http_response)
print(https_response)

执行结果:

<http.client.HTTPResponse object at 0x000002220510A470>
<http.client.HTTPResponse object at 0x0000022205116CC0>

到此这篇关于Python爬虫实现Cookie模拟登录的文章就介绍到这了,更多相关Python爬虫模拟登录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Python实现一键获取电脑浏览器的账号密码

    基于Python实现一键获取电脑浏览器的账号密码

    发现很多人在学校图书馆喜欢用电脑占座,而且出去的时候经常不锁屏,为了让大家养成良好的习惯,本文将分享一个小程序,可以快速获取你存储在电脑浏览器中的所有账号和密码,感兴趣的可以了解一下
    2022-05-05
  • pandas 两列时间相减换算为秒的方法

    pandas 两列时间相减换算为秒的方法

    下面小编就为大家分享一篇pandas 两列时间相减换算为秒的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python字符串中两个大括号{{}}的使用及说明

    python字符串中两个大括号{{}}的使用及说明

    这篇文章主要介绍了python字符串中两个大括号{{}}的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 基于使用paramiko执行远程linux主机命令(详解)

    基于使用paramiko执行远程linux主机命令(详解)

    下面小编就为大家带来一篇基于使用paramiko执行远程linux主机命令(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • pytorch 利用lstm做mnist手写数字识别分类的实例

    pytorch 利用lstm做mnist手写数字识别分类的实例

    今天小编就为大家分享一篇pytorch 利用lstm做mnist手写数字识别分类的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python基于xlutils修改表格内容过程解析

    Python基于xlutils修改表格内容过程解析

    这篇文章主要介绍了Python基于xlutils修改表格内容过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • python2与python3共存问题的解决方法

    python2与python3共存问题的解决方法

    这篇文章主要为大家详细介绍了python2与python3共存问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • 使用Python实现Mysql数据库相关操作详解

    使用Python实现Mysql数据库相关操作详解

    这篇文章主要介绍了使用Python实现Mysql数据库相关操作详解,pymysql是Python中操作数据库的第三方模块,通过这个模块的相关方法,我们可以连接并且去操作mysql数据库,需要的朋友可以参考下
    2023-08-08
  • Python+OpenCV+pyQt5录制双目摄像头视频的实例

    Python+OpenCV+pyQt5录制双目摄像头视频的实例

    今天小编就为大家分享一篇Python+OpenCV+pyQt5录制双目摄像头视频的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • 手把手教你搭建python+selenium自动化环境(图文)

    手把手教你搭建python+selenium自动化环境(图文)

    本文主要介绍了手把手教你搭建python+selenium自动化环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论