前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【被墙检测】IT狗被墙检测API调用

【被墙检测】IT狗被墙检测API调用

作者头像
pai233
发布于 2022-01-12 07:03:50
发布于 2022-01-12 07:03:50
4.3K010
代码可运行
举报
文章被收录于专栏:pai233的专栏pai233的专栏
运行总次数:10
代码可运行

最近有一个检测网站是否被墙的需求,找了几个网站,发现IT狗的API比较方便。

API详情

我们先看看IT狗的API的调用方式:

获取页面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
URL:https://www.itdog.cn/firewall/[domain]
请求方式:POST
请求主体:more=no&button_click=yes
返回:text/html

此处的[domain]即要检测的域名(一级域名),POST请求的主体无需变动。

这个API会返回一段HTML,即在浏览器打开时的页面。

防火墙检测

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
URL:https://www.itdog.cn/public/ajax.aspx?type=firewall
请求方式:POST
请求主体:host=[domain]&token=[token]
返回:text/html(但是格式为JSON

此处的[domain]即要检测的域名(一级域名),[token]的获取稍后会提到。

若请求成功,其返回内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "type":"success",//返回状态
    "host":"pai233.top",//检测的域名
    "firewall":false//防火墙状态,true为被墙,false为未被墙
}

请求失败/请求过快则返回空。

DNS检测

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
URL:https://www.itdog.cn/public/ajax.aspx?type=dns_error
请求方式:POST
请求主体:host=[domain]&token=[token]
返回:text/html(但是格式为JSON

此处的请求主体与防火墙检测的一样,但返回内容稍微有点不同。

若请求成功,其返回内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "type":"success",//返回状态
    "dns_error":false//DNS污染状态,false为未污染,true为已污染
}

同样的,请求失败/请求过快返回空。

获取Token

要调用IT狗的API,首先要获取到请求Token。那这个Token去哪里找呢?在网页端测试的页面中(即第一个获取页面API),我们可以发现到这一段:

这个就是我们需要的Token了。所以我们可以写出以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let _ = require("axios").default
const cookie = require("tough-cookie");
const cookieSupporter = require("axios-cookiejar-support").default
const JAR = new cookie.CookieJar()
const https = require("https")
let domain = "pai233.top"
_ = cookieSupporter(_)
_.defaults.jar = JAR
_.defaults.withCredentials = true
let html =await _.post('https://www.itdog.cn/firewall/'+domain,"more=no&button_click=yes",{
        headers: {
            'Referer': 'https://www.itdog.cn/firewall/'
        }
    });
    let tokenReg = new RegExp(/var token='(.*)'/g)//正则表达式分割
    let token = tokenReg.exec(html.data)[1]

此时的token变量里,已经成功存储了我们需要的Token。

发起请求

既然已经获取到了Token,那么请求就简单了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let _ = require("axios").default
const cookie = require("tough-cookie");
const cookieSupporter = require("axios-cookiejar-support").default
const JAR = new cookie.CookieJar()
const https = require("https")
let domain = "pai233.top"
_ = cookieSupporter(_)
_.defaults.jar = JAR
_.defaults.withCredentials = true
let html =await _.post('https://www.itdog.cn/firewall/'+domain,"more=no&button_click=yes",{
        headers: {
            'Referer': 'https://www.itdog.cn/firewall/'
        }
    });
let tokenReg = new RegExp(/var token='(.*)'/g)//正则表达式分割
let token = tokenReg.exec(html.data)[1]
let gfwStatus = await _.post('https://www.itdog.cn/public/ajax.aspx?type=firewall',"host="+domain+"&token="+token,{
        headers: {
            'Referer': 'https://www.itdog.cn/firewall/'+domain
        }
    })
let dnsStatus = await _.post('https://www.itdog.cn/public/ajax.aspx?type=dns_error',"host="+domain+"&token="+token,{
        headers: {
            'Referer': 'https://www.itdog.cn/firewall/'+domain
        }
    })
console.log(gfwStatus,dnsStatus)

这样就实现了检测域名是否被墙的需求。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-08-312,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何获取洛谷的CSRF Token
在向洛谷的API发起POST请求的时候,需要在请求头中携带一个X-CSRF-Token请求头。
pai233
2022/01/12
2.6K0
如何获取洛谷的CSRF Token
http网络编程(node版)
基础的东西总是很少人看,写起来也特别痛苦。不是因为它简单——恰恰是因为它太晦涩,太基础了——以至于没有人乐意用它来充实自己(装逼)。
一粒小麦
2019/07/18
1.3K0
http网络编程(node版)
基于Axios封装HTTP类库
axios 明明那么好用,为啥又要基于 axios 重新造一个轮子。首先不得否认的是 axios 确实好用,Github 能斩获近 90k 的 star,且基本已成为前端作为数据交互的必备工具。但是它对我所使用的环境下还是存在一定的问题,也就是我为什么要重新造一个轮子。
愧怍
2022/12/27
1.1K0
基于Axios封装HTTP类库
10 种CORS跨域解决方案
这是一个老生常谈的话题,以前我觉得这种基础文章没有什么好写的,最近为了线上问题深入了解底层,确实有点东西,下面汇总成10种方案。
sunsky
2022/09/09
7.2K0
10 种CORS跨域解决方案
【nodejs】解决跨域问题
一般浏览器都是第二种方式限制跨域请求,那就是说请求已到达服务器,并有可能对数据库里的数据进行了操作,但是返回的结果被浏览器拦截了,那么我们就获取不到返回结果,这是一次失败的请求,但是可能对数据库里的数据产生了影响。
一尾流莺
2022/12/10
1.8K0
【nodejs】解决跨域问题
开源的网易云音乐API项目都是怎么实现的?
上一篇文章这个高颜值的开源第三方网易云音乐播放器你值得拥有介绍了一个开源的第三方网易云音乐播放器,这篇文章我们来详细了解一下其中使用到的网易云音乐api项目NeteaseCloudMusicApi的实现原理。
街角小林
2022/09/02
4K0
开源的网易云音乐API项目都是怎么实现的?
axios
我第一次接触ajax是从JQuery ajax开始的。但是对于现在的脚手架方式,不会有人往项目中引入jQuery。因为JQuery已经不太常用了。
用户4793865
2023/01/12
4.3K0
一、Axios基础
参考文档:http://www.axios-js.com/zh-cn/docs/ axios库基本概念 它是一个类库,基于promise管理的Ajax库 关于get、post方法的参数 url 第一个参数,请求的url地址 options 对象。 get方法 axios.get('https://v1.hitokoto.cn/', { params: { c: "b" } }).then(function (res) { console.log(res); })
Dreamy.TZK
2020/08/25
1.7K0
总结Vue3 的一些知识点:Vue3 Ajax(axios)
Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中。
爱学iOS的小麦子
2023/05/26
2K0
基于TypeScript封装Axios笔记(九)
有些时候我们会发一些跨域请求,比如 http://domain-a.com 站点发送一个 http://api.domain-b.com/get 的请求,默认情况下,浏览器会根据同源策略限制这种跨域请求,但是可以通过 CORS 技术解决跨域问题。
用户7572539
2020/08/26
2.4K0
10 种跨域解决方案(附终极方案)
嗯。又来了,又说到跨域了,这是一个老生常谈的话题,以前我觉得这种基础文章没有什么好写的,会想着你去了解底层啊,不是很简单吗。但是最近在开发一个 「vscode 插件」 发现,当你刚入门一样东西的时候,你不会想这么多,因为你对他不熟悉,当你遇到不会的东西,你就是想先找到解决方案,然后通过这个解决方案再去深入理解。就比如跨域,新人或者刚接触的人对它并不是那么熟悉,所以说列出一些自己积累的方案,以及一些常用的场景来给他人带来一些解决问题的思路,这件事是有意义的。(写完之后还发现真香。以后忘了还能回来看看)
ConardLi
2020/05/08
3.1K0
10 种跨域解决方案(附终极方案)
单点登录简单实现
下面展示同一级域名和不同一级域名这两种情况下的单点登录的实现方案,这两种情况下实现的方法差不多,前面一种情况相对后面来说略微简单一点,所以我们将先展示如何在同一级域名下实现单点登录,最后再展示不同一级域名下的情况。
腾讯IVWEB团队
2020/06/28
2K0
常见登录认证 DEMO
basic auth 是最简单的一种,将用户名和密码通过 form 表单提交的方式在 Http 的 Authorization 字段设置好并发送给后端验证
JS菌
2019/07/30
2.9K0
vue中Axios的封装和API接口的管理
回归正题,我们所要的说的axios的封装和api接口的统一管理,其实主要目的就是在帮助我们简化代码和利于后期的更新维护。
Nealyang
2019/09/29
3.8K0
vue中Axios的封装和API接口的管理
axios详解以及完整封装方法
Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。
HelloWorldZ
2024/03/20
10.8K0
某查”平台请求头反爬技术解析与应对
请求头(HTTP Header)是 HTTP 协议中用于在客户端和服务器之间传递信息的一部分。它包含了请求的来源、用户代理、内容类型等关键信息。许多网站通过检查请求头中的特定字段来判断请求是否来自合法的浏览器,从而防止爬虫的非法访问。
小白学大数据
2025/02/25
1260
web常见安全问题
Xss(cross site scripting)跨站脚本攻击,为了和css区分,所以缩写是xss。
hss
2022/02/25
1.6K0
python模块之requests及应用
Python标准库中提供了:urllib、urllib2、httplib等模块以供Http请求,但是,它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。
菲宇
2019/06/12
1.6K0
python模块之requests及应用
解决post方法使用application/x-www-form-urlencoded格式编码数据
文档: https://www.kancloud.cn/yunye/axios/234845 官网: https://www.axios.com/ gitHub: https://github.com/axios/axios
唯一Chat
2022/11/16
4K0
Vue 框架实现用户单点登录功能的详细方法
单点登录(Single Sign-On, SSO)是一种身份验证机制,允许用户使用一组凭证(如用户名和密码)登录到多个相关系统,而无需为每个系统单独进行身份验证。
小焱
2025/05/30
1380
Vue 框架实现用户单点登录功能的详细方法
相关推荐
如何获取洛谷的CSRF Token
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验