文章目录

记一次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会出现无法正常调用的情况