PHP抓取备案接口的经验分享
作者:luciaxii
这篇文章主要介绍了PHP抓取备案接口的经验分享,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
检验一个域名是否有备案
最近,拿到一个需求。需要检验一个域名是否有备案。最简单的方式就是通过工信部网站上去查拿着域名去查询就可以了。经过我多次实验. 发现工信部网站除了验证码以外,还有对IP有封禁处理。经过成本对比,发现并不适用。于是在互联网上找对应的工具。还别说,还真就找到了一个。www.lbtool.cn。下面就记录一下我的抓取过程。
分析网站
首先先随意注册了个用户,然后使用了一下备案查询的信息。截图如下
这一看应该就是一个前后端分离的站点。通过Bearer携带用户信息进行传递。看到这么一个简单的验证,瞬间就兴奋了。于是开始模拟请求
开始模拟
由于我们这边是使用PHP进行开发. 我这里直接使用了PHP. 模拟代码如下.
<?php function postJSON($url, $post_data = [], $headers = []) { $post_string = json_encode($post_data); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 增加ua. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); curl_setopt($ch, CURLOPT_TIMEOUT, 3); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); return $result; } $domain = count($argv) > 1 ? $argv[1] : 0; # 您的账户密钥. 需要通过注册过后去获取一下. $token = ''; if(!$domain) { exit('请输入域名'); } $resp = postJSON('http://www.lbtool.cn/api/home/domain/record', [ 'domain' => $domain, ], [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json' ]); $resp = json_decode($resp, true); if($resp['code'] != 200) { exit($resp['msg']); } exit(json_encode($resp['data'], JSON_UNESCAPED_UNICODE));
,直接保存为run.php. 就开始进行测试。
测试
直接使用如下命令
php run.php baidu.com
直接就返回了如下的结果
{"main_num":"京ICP证030173号","site_num":"京ICP证030173号-1","unit_name":"北京百度网讯科技有限公司","unit_type":"企业","home_url":"","pass_date":"2023-08-15"}
ok. 预期达到.
缺点
在尝试过程中,发现。如果不携带user-agent和content-type. 不会返回任何信息.
最后
附上注册地址http://www.lbtool.cn/login. 上面代码可以直接另存为就可以了. 经测试目前发现网站不封任何的IP. 暂无封禁策略. 也可以用于其他该网站其他查询信息.
以上就是PHP抓取备案接口的经验分享的详细内容,更多关于PHP抓取备案接口的资料请关注脚本之家其它相关文章!