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

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库实现模拟登陆

前几天有私信小编要Python的学习资料,小编整理了一些有深度的Python教程和参考资料,从入门到高级的都有,文件已经打包好了,正在学习Python的同学可以下载学习学习。文件下载方式:点击小编头像,关注后私信回复“python”即可下载。首先把代码撸起来!首先把代码撸起来!首先把代码撸起来!重要的事说三遍,哈哈。“编程是门手艺活”。什么意思?得练啊。

相关推荐