python干货|用requests库实现模拟登陆

发表时间:2020-03-01

Python模拟登录的几种方法

方法一:直接使用已知的cookie访问

方法二:模拟登录后再携带得到的cookie访问

方法三:模拟登录后用session保持登录状态

方法四:使用无头浏览器访问

python干货|用requests库实现模拟登陆

方法一:直接使用已知的cookie访问

使用已知的cookie来访问,简单来说,就是——只要得到了别的客户端的cookie,我们就可以假冒成它来和服务器对话。这给我们的程序带来了可乘之机。

用cookie访问就会有一下的好处:

  1. 可配置到期规则 Cookie 可以在浏览器会话结束时到期,或者可以在客户端计算机上无限期存在,这取决于客户端的到期规则。
  2. 简单性 Cookie 是一种基于文本的轻量结构,包含简单的键值对。
  3. 数据持久性 虽然客户端计算机上 Cookie 的持续时间取决于客户端上的 Cookie 过期处理和用户干预,Cookie 通常是客户端上持续时间最长的数据保留形式。
python干货|用requests库实现模拟登陆

方法二:模拟登录后再携带得到的cookie访问

原理: 我们先在程序中向网站发出登录请求,也就是提交包含登录信息的表单(用户名、密码等)。从响应中得到cookie,今后在访问其他页面时也带上这个cookie,就能得到只有登录后才能看到的页面。

python干货|用requests库实现模拟登陆

方法三:模拟登录后用session保持登录状态

python干货|用requests库实现模拟登陆

首先了解一下session的基本原理: 浏览器和服务器采用http无状态的通讯,为了保持客户端的状态,使用session来达到这个目的。在session机制中,采用了一个唯一的session_id来标示不同的用户,浏览器每次请求都会带上由服务器为它生成的session_id.

当客户端访问服务器时,服务器根据需求设置session,将会话信息保存在服务器上,同时将标示session的session_id传递给客户端浏览器,

浏览器将这个session_id保存在内存中(还有其他的存储方式,例如写在url中),我们称之为无过期时间的cookie。浏览器关闭后,这个cookie就清掉了,它不会存在用户的cookie临时文件。以后浏览器每次请求都会额外加上这个参数值,再服务器根据这个session_id,就能取得客户端的数据状态。

python干货|用requests库实现模拟登陆

方法四:使用无头浏览器访问

无头浏览器说白了就是能模拟人工在有头浏览器中的各种操作。那自然很多人力活,都能使用无头浏览器来做(比如上面这个下载 pdf 的过程,其实是人力打开每一个文章页面,然后按 ctrl+p 或 command+p 保存到本地的自动化过程)。

无头浏览器列举:

  • PhantomJS:基于QtWebkit的无头浏览器,第一看到PhantomJS以为是一个NodeJS的模块,其实PhantomJS和NodeJS的处于同等级别的应用,两者毫无关系。唯一有联系的就是他们使用的开发语言都是javascript
  • SlimerJS:基于Gecko的无头浏览器,SlimerJS和PhantomJS基本兼容,就是一个内核换成了Gecko的PhantomJS
  • HtmlUnit:纯java开发的无头浏览器,完全java开发,javascript引擎使用的是Rhnio,由于不是基于Webkit、Gecko等主流内核开发,兼容性不好
python干货|用requests库实现模拟登陆

python干货|用requests库实现模拟登陆

最后

python干货|用requests库实现模拟登陆

文章来源互联网,如有侵权,请联系管理员删除。邮箱:417803890@qq.com / QQ:417803890

微配音
    </div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值