首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

python–爬虫–模拟登录全面介绍和简例–以抓取雅卓app为例(1)

python–爬虫–模拟登录全面介绍和简例–以抓取雅卓app为例(1)

模拟登录实现原理
浏览器访问服务器的过程

爬虫的本质是模拟浏览器访问服务器,所以我们首先要了解浏览器和服务器的交互以及登录实现的过程。

在用户访问网页时,不论是通过URL输入域名或IP,还是点击链接,浏览器向WEB服务器发出了一个HTTP请求(Http Request)

WEB服务器接收到客户端浏览器的请求之后,响应客户端的请求,发回相应的响应信息(Http Response)

浏览器解析引擎,排版引擎分析返回的内容,呈现给用户。

WEB应用程序在于服务器交互的过程中,HTTP请求和响应时发送的都是一个消息结构。

Http消息

当浏览器向服务器发送请求的时候,其实就是发送http请求消息报文。

服务器返回数据时,发送http响应消息报文。

这两种类型的消息都是由一个起始行,消息头,一个指示消息头结束的空行和可选的消息体组成。

http请求消息中
起始行包括 请求方法,请求的资源, HTTP协议的版本号
消息头包含各种属性
消息体包含数据

GET请求并没有消息主体,因此在消息头后的空白行中没有其他数据。

Http响应消息中,起始行包括HTTP协议版本,http状态码和状态,消息头包含各种属性,消息体包含服务器返回的数据内容。

如下图从fiddler抓取的http请求和http响应,GET请求内容为空,故消息头之后的空行和消息体都为空。

服务器发送的响应消息如下,浏览器正常接收到服务器发回的http报文

浏览器通过http来跟服务器进行交互,那么我们只要模拟浏览器 的http消息,造成一模一样的请求,就可以实现跟登录后一样的身份进行访问。

那么一般来说,服务端是根据什么来进行用户身份的识别呢,答案是cookie。

为了实现这种用户标记,服务器就采用了cookie这种机制来识别具体是哪一个用户的访问。

cookie在http请求和http响应的头信息中,cookie是消息头的一种很重要的属性。
了解cookie

为了实现用户标记,在Http无状态请求的基础之上,我们需要在请求中携带一些用户信息,这就是cookie机制。

我们的登录操作,其实就是给用户名和密码给服务端验证,如果身份符合,服务端就会返回cookie的信息给浏览器,浏览器把cookie存在本地后以后每次访问都带着cookie去进行访问,这样就实现了 有用户身份的访问。

可以在浏览器中看到浏览器缓存的cookie

请求时cookie如下:

几乎现在所有的网站都会发送一些 cookie信息过来,当用户请求中携带了cookie信息,服务器就可以知道是哪个用户的访问了,从而不需要再使用账户和密码登录。
但是,刚才也提到了,cookie信息是直接放在Http协议的header中进行传输的,看得出来,这是个隐患!一旦别人获取到你的cookie信息(截获请求,或者使用你的电脑),那么他很容易从cookie中分析出你的用户名和密码。为了解决这个隐患,所以有了session机制。
返回列表