大家好,我是辣条,这是爬虫系列的32篇。
前言
爬虫系列太难了,我算了一下这个系列从开始到现在我写了40篇左右了,但是现在这个专栏只显示30篇左右,大概有10篇左右下架了因为版权或者违规的问题,难受...
采集目标
网址:
https://m.wcbchina.com/login/login.html?service=https://m.wcbchina.com/my/my.html&bp=https%3A//m.wcbchina.com/my/my.html
工具准备
开发工具:pycharm 开发环境:python3.7, Windows10 使用工具包:requests,md5
项目思路解析
这个数据的逆向是app的数据,想要解析的话大部分进行app的数据逆向,用在web网页的时候需要通过抓包工具进行设定,将左上角第二个选项点亮,把浏览器设置为手机的模式。
先输入错误的账户密码找到登录的请求接口,在进行数据的解析处理。
找到数据后开始进行解析:
请求网址为:https://m.wcbchina.com/api/login/login?rnd=0.6807164275086108
请求方法为:post
需要携带的请求头:user-agent
需求传递的参数:传递的数据类型为json,
{"auth":{"timestamp":1635225584675,"sign":"1992F839A06E27B22A03ADFAA6630F44"},"username":"17673942335","password":"D3432F4A98143D1951496D31ED76B5E2"}
重数据中可以看出数据网址里的rnd的值是随机数0-1的随机数,传递数据的timestamp为时间戳,sign,和password都是加密数据,确定数据后开始进行解析,解出sign和password的生成规律 通过搜索方式找到数据的生成位置,数据的加密方式为md5加密,可以打断点验证数据是否为我们想要的数据,sing的数据是 N , N的值是由h.hex_md5((v || "") + (g || "") + c).toUpperCase()生成的
打上断点查看数据的生成结果v和g的值都是空数据,c的数据是时间戳,那最终的sing的数据是对时间戳进行md5的加密加字符串大写的值,sing的值确定在来找password的值,在全局搜索password的关键字。
password的值是在loginAction进行获取在c.login进行参数传递,传递的数据密码就是md5的加密数据,password和sing数据都是进过md5加密的数据,思路清楚后开始书写代码。
简易源码分享
import requests # 发送网络请求的工具包
import json
import time
import random
from hashlib import md5
def main():
url = "https://m.wcbchina.com/api/login/login?rnd=" + str(random.random())
password = input('请输入你的密码:')
password = md5(password.encode()).hexdigest()
print(password.upper())
time_data = int(time.time()*1000)
sign = md5(str(time_data).encode()).hexdigest().upper()
data = {"auth": {"timestamp": time_data, "sign": sign},
"username": "17673942335",
"password": password.upper()
}
response = requests.post(url, data=json.dumps(data))
print(response.json())
main()
\