思路:
首先,分享的是抓取思路:
1.一般爬虫通过观察页面分析页面是动态页面还是静态页面,当页面没有加载时则是动态页面
2.动态页面有js数据加密,ajax数据请求
3.区分请求方式:get/post请求方式
4.检索headers data params 中的数据是否存在加密内容
5.合理构建headers
6.请求发送
步骤
一、
通过js调试,在过滤器输入页面关键字进行接口查找,如果没有找到接口,就刷新一下页面,有可能是还没有加载出来
二、
找到接口后,点击接口找到颜色较深的
观察接口的请求方式为GET请求,get:params post:data
观察GET请求方式headers,params 数据存在加密内容
三、
进入启动器引导,
四、
搜索加密的关键词sign,找到搜索加密的位置
然后就对js代码进行断点调试,查漏补缺。
我好懒,懒得截图了,分享思路!!!
调试
1.通过打断点,对找到的sign关键字断点调试,将sign拼凑出来
j = h(d.token + "&" + i + "&" + g + "&" + c.data)
拿到的sign的值,将sign作为参数请求中
2.通过python中的一个库execjs可以将js代码写入python
使用方法:
import execjs
with open('D:\python_project\mytest\sign加密.js', 'r', encoding='utf-8') as f:
#读取到调试到的js代码
jscode = f.read()
#将signKey参数传入js代码的h方法中
ctx = execjs.compile(jscode).call('h', signKey)
3.然后用python的request爬取1688数据
重在分享思路,源码我就不发了,如果显示令牌过期,则刷新浏览器页面,更换cookie值重新传入即可啦!