记一次Referer的妙用
项目有个需求 需要能查询域名是否被QQ或者微信屏蔽 微信检测已经在github上找到开源项目 QQ网址检测准备调用QQ安全中心的接口 https://urlsec.qq.com/check.html
查找在线网址调用的接口
1.打开网站 https://urlsec.qq.com/check.html --> 打开调试选项 --> 随便输入一个网址 查看数据返回 --> 找到一个可疑请求
https://cgi.urlsec.qq.com/index.php?m=check&a=check&callback=jQuery111305943733430693647_1553831851240&url=https%3A%2F%2Fblog.youngblog.cc&_=1553831851241
response: jQuery111305943733430693647_1553831851240({"data":{"retcode":0,"results":{"url":"https:\/\/blog.youngblog.cc","whitetype":1,"WordingTitle":"","Wording":"","detect_time":"0","eviltype":"0","certify":0,"isDomainICPOk":0}},"reCode":0})
2.将callback , _: 参数去掉几个试下可以直接返回json --> 传入一个已经被屏蔽的网址 发现 whitetype 值变化 我们直接调用这个接口应该就可以实现对域名是否被屏蔽的状态进行检测
python 脚本调用
import requests
import urllib3
import json
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36'}
def get_qq_domain_status(domain):
urllib3.disable_warnings()
url="https://cgi.urlsec.qq.com/index.php?m=check&a=check&url=" + domain
result = requests.get(url,headers=headers,verify=False).text
if result == "":
print("QQ检查失败")
return "false"
code = eval(result)["data"]["results"]["whitetype"]
if code == 2 :
print("QQ检测状态码为2危险网站")
return "false"
elif code == 1 or code ==3 :
print("QQ检测正常")
return "true"
print(get_qq_domain_status("amws56.com"))
## 发现并不能正常调用 无返回值
添加 referer 后正常调用
发现上面脚本无法正常调用,怀疑是否需要添加cookie, 添加cookie后仍然无效, 观察headers发现多了一个referer字段 设置referer后可以正常调用 更改设置后的headers
headers = {'Referer':'https://guanjia.qq.com',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36'}
分析
Referer此处应该事用来防止恶意调用,所以不添加Referer会出现无法正常调用的情况