1. 请求头中最常见的一些重要内容
- User-Agent : 请求载体的身份标识(⽤啥发送的请求)
- Referer: 防盗链(这次请求是从哪个⻚⾯来的? 反爬会⽤到)
- cookie: 本地字符串数据信息(⽤户登录信息, 反爬的token)
2. 响应头中一些重要内容
- cookie: 本地字符串数据信息(⽤户登录信息, 反爬的token)
- 各种神奇的莫名其妙的字符串(这个需要经验了, ⼀般都是token
字样, 防⽌各种攻击和反爬)
数据解析的四种方式
- re解析
- bs4解析(beautifulsoup)
- xpath解析
- pyquery解析
这四种方式可以混合使用,完全以结果做导向,只要能拿到想要的数据。
正则表达式
- 元字符:具有固定含义的特殊符号,常用元字符
- . 匹配除换⾏符以外的任意字符, 未来在python的re模块
中是⼀个坑. - \w 匹配字⺟或数字或下划线
- \s 匹配任意的空⽩符
\d 匹配数字 - \n 匹配⼀个换⾏符
- \t 匹配⼀个制表符
- ^ 匹配字符串的开始
- $ 匹配字符串的结尾
- \W 匹配⾮字⺟或数字或下划线
- \D 匹配⾮数字
- \S 匹配⾮空⽩符
- a|b 匹配字符a或字符b
- () 匹配括号内的表达式,也表示⼀个组
- [...] 匹配字符组中的字符
- [^...] 匹配除了字符组中字符的所有字符
- . 匹配除换⾏符以外的任意字符, 未来在python的re模块
- 量词:控制前面的元字符出现的次数
- 重复零次或更多次
-
- 重复⼀次或更多次
- ? 重复零次或⼀次
- {n} 重复n次
- {n,} 重复n次或更多次
- {n,m} 重复n到m次
- 贪婪匹配和惰性匹配
- .* 贪婪匹配, 尽可能多的去匹配结果
- .*? 惰性匹配, 尽可能少的去匹配结果 -> 回溯
这两个要着重的说⼀下. 因为我们写爬⾍⽤的最多的就是这个惰性匹
配.
正则预加载
- 提前编写好正则对象
python
import re
# 提前把正则对象加载完毕
obj = re.compile(r"\d+")
# 直接把加载好的正则进行使用
ret = obj.finditer("abc123def456qqq789")
for item in ret:
print(item.group())
分组提取数据
python
# 分组提取
a = """
<div class='⻄游记'><span id='10010'>中国联通</span></div>
<div class='⻄游记'><span id='10086'>中国移动</span></div>
"""
obj = re.compile(r"<span id='(?P<id>\d+)'>(?P<name>.*?)</span>")
ret = obj.finditer(a)
for item in ret:
print(item.group("id"), item.group("name"))
python中如何让"."匹配换行符、re.S
python
obj = re.compile(r'<div class="item">.*?<span class="title">(?P<name>.*?)</span>', re.S)
app逆向四个阶段
- 快速了解app逆向到底干的什么
- java基础
- 安卓开发
- 逆向+案例
安卓设备
-
真机
-
模拟器
win: 逍遥、夜神、雷电、网易mumu
max: 网页mum
win安装时需要开启vt。
-
安装网页mumu模拟器后,先开启root权限