爬虫 跨域请求 获取json数据 解决参数加密
分析网址--------------------------------提示 抓取对方信息是通过对方允许的 请不要违法操作 抓取其他个人有关信息 网址先发送了一个OPTIONS请求
Request URL: http://xxxxxxxx.com Request Method: OPTIONS Status Code: 200 OK Remote Address: 47.90.111.000 Referrer Policy: no-referrer-when-downgrade
再OPTIONS请求以后又发送了一个post请求
Request URL: http:// Request Method: POST Status Code: 200 OK Remote Address: 47.90.111.91:80 Referrer Policy: no-referrer-when-downgrade
因为post返回的是一个json数据 这种网址最容易进行抓取了 因为返回的json数据里面我们需要的信息几乎都在里面了
当时我自己用postman先进行模拟请求 同样的参数 同样的请求信息 怎么都获取不到对方的数据 post请求一直失败
请求参数 如下 某些参数我是删过的 避免对方信息泄露
countryId: 1 page: 2 pageSize: 20 cityId: 194 order: -1000 language: cn deviceType: web deviceId: Mozilla_Netscape apiVersion: 2.0.1 systemVersion: 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 signToken: 4de4c34c6b79045936c4f2c1863c893a
解决办法如下
from urllib import request, parse import urllib import gzip
url = http://
request_header = {
Accept: application/json, text/plain, */*,
Accept-Encoding: gzip, deflate,
Accept-Language: zh-CN,zh;q=0.9,
Connection: keep-alive,
Content-Type: application/x-www-form-urlencoded,
Host: ,
Origin: h,
Referer: fhttp://ty,
User-Agent: random.choice(deal_with_info.header_info())
}
# 利用urllib解决跨域问题
req = request.Request(url) # 响应
for key in request_header:
req.add_header(key, request_header[key])
response = request.urlopen(req, data=request_data)
ret = gzip.decompress(response.read())
自己可以写一个脚本尝试一下 如果可以获取到则就成功了
请求参数 MD5加密
signToken: 4de4c34c6b79045936c4f2c1863c893a
signToken这个参数是前端js进行加密的 我在对方js里面找到了这个加密的算法 就是这种 自己一个一个里面去找一下
找到后进行分析后则明白对方是如何进行加密的了 加密前端有加密 后台肯定有对应的验证 找到规则就很简单了
有疑问可以留言 可以一起研究
