接口校验流程

由于学习爬虫是野路子出家,在以往的接口调试中,都是用请求头中的字段去胡乱匹配,也不知个所以然,往往都是靠猜最后请求成功的,耗时很久。今天学习了一下接口校验的方法,特此做笔记记录一下。

以http://www.whggzy.com/front/search/category,post请求为例,直接requests.post()会返回500,提示系统出错,请稍后重试
流程如下:
第一步:选取常用请求头字段(User-Agent和防盗链Referer)

headers = {
    'Referer': 'http://www.whggzy.com/PoliciesAndRegulations/index.html?utm=sites_group_front.2ef5001f.0.0.109957c0c4d011edb1ab2bbc0ab14525',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'
}

第二步:通过路径在XHR断点中进行校验:赋值路径/front/search/category,在网页点击source(源代码),右侧找到XHR/fetch Breakpoints(XHR/提取断点)点击添加路径,然后重新刷新网页
在这里插入图片描述
刷新网页后,由于作用域没有路径相关的关键字,所以点击下一步一步步调试
在这里插入图片描述
直到看到关键字路径/front/search/category,然后点击requestHeaders查看请求头校验,同时可以看到options中data格式为字符串格式,所以不能直接data不能写为常用的json格式。
在这里插入图片描述
将验证字段添加到请求头中

headers = {
    'Accept': "*/*",
    'Content-Type': "application/json",
    'X-Requested-With': "XMLHttpRequest",
    'Referer': 'http://www.whggzy.com/PoliciesAndRegulations/index.html?utm=sites_group_front.2ef5001f.0.0.109957c0c4d011edb1ab2bbc0ab14525',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'
}

第三步:确认data格式:由于data格式为字符串格式,所以可以用json.dumps将data解析为json字符串,或者直接改写data为字符串格式:

data = '{\"utm\":\"sites_group_front.2ef5001f.0.0.109957c0c4d011edb1ab2bbc0ab14525\",\"categoryCode\":\"GovernmentProcurement\",\"pageSize\":15,\"pageNo\":1}'

完整代码:

import json
import requests

url = 'http://www.whggzy.com/front/search/category'

headers = {
    'Accept': "*/*",
    'Content-Type': "application/json",
    'X-Requested-With': "XMLHttpRequest",
    'Referer': 'http://www.whggzy.com/PoliciesAndRegulations/index.html?utm=sites_group_front.2ef5001f.0.0.109957c0c4d011edb1ab2bbc0ab14525',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'
}
data = {
    'categoryCode': "GovernmentProcurement",
    'pageNo': 1,
    'pageSize': 15,
    'utm': "sites_group_front.2ef5001f.0.0.109957c0c4d011edb1ab2bbc0ab14525"
}
r = requests.post(url, headers=headers, data=json.dumps(data))

# data = "{\"utm\":\"sites_group_front.2ef5001f.0.0.109957c0c4d011edb1ab2bbc0ab14525\",\"categoryCode\":\"GovernmentProcurement\",\"pageSize\":15,\"pageNo\":1}"
# r = requests.post(url, headers=headers, data=data)

print(r.status_code)
print(r.text)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值