路飞学城—Python—爬虫实战密训班 第二章

请求库之requests模块总结

request:

# 必须背会
method
url
params
data
json
headers
cookies
:param proxies: 如果被封IP 用代理 就找一个代理 做很多搭理通过radmiom随机取

:param method: method for the new :class:`Request` object.
:param url: URL for the new :class:`Request` object.
:param params: (optional) Dictionary or bytes to be sent in the query string for the :class:`Request`.

:param data: (optional) Dictionary or list of tuples ``[(key, value)]`` (will be form-encoded), bytes, or file-like object to send in the body of the :class:`Request`.
:param json: (optional) A JSON serializable Python object to send in the body of the :class:`Request`.

:param headers: (optional) Dictionary of HTTP Headers to send with the :class:`Request`.
:param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`.


# 理解
:param files: 上传文件

:param auth: Basic 验证 浏览器认证

:param timeout: :type timeout: float or tuple

:param allow_redirects: 是否同意重定向 默认True

:param stream 下载大文件时:

:param cert: https 证书 生成一对证书,默认访问 需要整数才可以访问 特殊网站都需要 证书对数据加密 服务器收到后反解
有钱的时候 用户有的不用做操作 自动推送到浏览器上 所以这个参数在没钱的时候用 爬的知乎 百度 发请求的时候都是自动携带
爬小众网站 自己做的证书 可能得下载证书 使用
:param verify: 确认之后是否向下走

内容详细:

1、基于Flask编写登录页面:显示二维码

注意:
web微信的二维码是张图片 每次刷新他的路径最后会变 src = https://login.weixin.qq.com/qrcode/wYGKsfOqxA== 他实际上是访问的时候发送的请求 然后返回的二维码
我们来向这个地址发送请求 获取随机字符串
https://login.wx.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_CN&_=1530771135867

1530771135867 是个时间戳 time.time()

学会:如果想要页面上哪个功能的话,先看这个功能需要什么 ,然后在它的请求和前面的请求有没有生成 一个一个的找
a 去上步请求中查找想要的内容
b chrome的使用 ,network HEADERS 预览 响应 Cookies 所有时间
c requests

2、二维码变
二维码是可变的 刷新二维码页面
http请求是短连接 手机扫码向微信服务发送请求 微信拿到后通知浏览器 应该是浏览器偷偷的一直像浏览器发请求检测是否扫码
浏览器向后台轮询 定时发送消息
长轮询机制 wxweb 25秒重新发一次请求 一致不扫码的话 window.code=408; 扫码之后为 201 并拿到头像
检查用户是否已经扫码,登录 (会将请求夯住)

# 总结:
当手机扫描web微信的二维码的时候,web头像替换了二维码图片,这是怎么做到的?
手机向微信服务发送请求 服务器要通知浏览器,并且头像也要给浏览器, 但是服务器不能主动通知,其实是浏览器偷偷的不停的向服务器发请求,询问检测是否扫码、登录

web微信 采用长轮询机制 大约30秒会去发送一次请求 状态为pending(正在发请求)
发送的请求地址 询问是否有扫码、登录: 返回值是:window.code=408;
https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=oYESlGPUJw==&tip=0&r=-1767912478&_=1530776241202
https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=gZySpKDlIg==&tip=0&r=-1852985564&_=1530861216249



当手机扫码后的显示: 通过basic64 获得头像信息

扫码:
- 显示头像

登录:
- 获取凭证信息
<error>
<ret>0</ret>
<message></message>
<skey>@crypt_1eb7b464_f5c41b0de57761f53e7f997aa8d0d045</skey>
<wxsid>tUHQ9XjSN+5PG43Z</wxsid>
<wxuin>1260267625</wxuin>
<pass_ticket>10T5q%2FFSioVXEEx2uv9RzJ480n5%2FKmkbN6mUmzLIBIWlWPyvUdiIoHj9pt3IqQPP</pass_ticket>
<isgrayscale>1</isgrayscale>
</error>

3、用户初始化
发送post请求 Request URL:https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=-2095646078
data = {
"BaseRequest":{
"Uin":"1260267625",
"Sid":"kL/uNX4ajYNLY+ez",
"Skey":"",
"DeviceID":"e097408841221436"
}
}

Request URL:https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=-2095646078&lang=zh_CN&pass_ticket=


4、获取所有联系人列表:
getContactList

总结:
1、url
2、响应
3、cookie
4、chorme
PS:
轮询
长轮询 发一次请求 最多等多少秒后 再发一次请求
websocket

猜你喜欢

转载自www.cnblogs.com/touchlixiang/p/9286851.html
今日推荐