博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用必应查询接口开发搜索工具:反查一个IP上的旁站
阅读量:7067 次
发布时间:2019-06-28

本文共 3606 字,大约阅读时间需要 12 分钟。

一 API申请

申请地址:

当然首先要进行登陆,没有账号的话就注册一个,但是需要注意的是“国家/地区”这个地方最好别填中国大陆,填香港,台湾或者其他国家都行。

订阅的时候选择第一个就行,因为一般情况下1个月查询5000次已经够用了

订阅完成后,点击“我的账户”,把“主帐户密钥”给记下来,待会要用

二 使用之前需要了解的简单概念

这里我推荐一个官网提供的调试页面:

使用这个API主要需要注意以下几点:

(1请求URLhttps://api.datamarket.azure.com/Bing/Search/v1/Web

(2)几个常用参数:

i)Query 表示需要查询的内容,这里由于我们是要查一个IP上的网站,因此应该是:ip:IPName,比如:Query=’ip:180.97.161.184′

ii)$format=json 表示返回的数据格式是json

iii)$top=100 每页最多显示100条记录

iiii)$skip 表示从第几条记录开始查询,相当于翻页,查询第几页,需要和$top结合起来使用

(3)调用这个API需要使用“主帐户密钥”进行认证

Java中是这样设置的:

private String sAuth = "";  //认证
this.sAuth = "Basic " + Base64.encodeBase64String((":" + AppId).getBytes());  //认证信息
connection.setRequestProperty("Authorization", sAuth);

注:这里进行Base64加密用到了commons-codec-1.9.jar,可以去官网下载,也可以使用我这个

百度云盘链接:

三 测试代码

package whois;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.Iterator;import java.util.LinkedHashSet;import java.util.Set;import java.util.regex.Matcher;import java.util.regex.Pattern;import org.apache.commons.codec.binary.Base64;public class BingDemo {	private String sAuth = "";  //认证	private String query = "";  //查询旁站		public BingDemo(String AppId,String ip) {		this.sAuth = "Basic " + Base64.encodeBase64String((":" + AppId).getBytes());  //认证信息		this.query = "Query='ip:" + ip + "'";	}			public static void main(String[] args) {		String AppId = "你的主账户秘钥";  //API Key		BingDemo bingDemo = new BingDemo(AppId, "180.97.161.184");				Set
 set = new LinkedHashSet
(); set = bingDemo.searchDomainByBing(); Iterator
 iterator = set.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); } } /**  * 通过必应的接口查询一个IP的旁站(已去重)  *   * @return LinkedHashSet
类型的集合  *   * */ public Set
 searchDomainByBing(){ Set
 set = new LinkedHashSet
();  //查到的域名的有序集合 String domains = searchDomains(0); String[] domainsByBing = domains.split(" "); for(String s : domainsByBing){ if(!"".equals(s)){ set.add(s); } } return set; } /**  * 通过必应的接口查询一个IP的旁站的一页结果  *   * @param skip 页数标志,每增加100相当于翻一页  *   * @return 查到的所有结果的字符串合集(未去重)  * */ public String searchDomains(int skip){ String displayUrl = "";  //最后的域名合集 try { URL url = new URL("https://api.datamarket.azure.com/Bing/Search/v1/Web?" + query  + "&$format=json" + "&$top=100" + "&$skip=" + skip); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(10000);  //毫秒 connection.setReadTimeout(10000); connection.setRequestProperty("Authorization", sAuth); InputStream inputStream = new BufferedInputStream(connection.getInputStream()); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line = ""; String reg = "\"DisplayUrl\":\"(([a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+)/?.*?)?\",\"Url\":"; Pattern pattern = Pattern.compile(reg); Matcher matcher; while((line = reader.readLine()) != null){ matcher = pattern.matcher(line); while(matcher.find()){ displayUrl = displayUrl + matcher.group(2) + " ";// System.out.println(displayUrl); } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } //说明上一页就已经结束了 if("".equals(displayUrl)) return displayUrl; //继续查询下一页 else{ return displayUrl + searchDomains(skip + 100); } }}

四 测试结果

本文转自 pangfc 51CTO博客,原文链接:http://blog.51cto.com/983836259/1726670,如需转载请自行联系原作者

你可能感兴趣的文章
squid代理http和https方式上网的操作记录
查看>>
Android 手机卫士--阶段小结1
查看>>
mysql join优化
查看>>
Ubuntu常用软件安装(小集合)
查看>>
148. Sort List
查看>>
Multicast注册中心
查看>>
技术点不亲身实验一遍,难免会被网文唬
查看>>
天乙社区后台管理分析(一)
查看>>
C# iframe session 丢失
查看>>
sed命令详解及应用实例
查看>>
[置顶] 在Visual Studio 2008上调试C语言程序
查看>>
【三石jQuery视频教程】01.图片循环展示
查看>>
matlab std函数 用法及实例
查看>>
【linux shell系列--1】crontab命令
查看>>
jquery层级原则器(匹配父元素下的子元素)
查看>>
Node.js 本地Xhr取得Node.js服务端数据的例子
查看>>
求一个集合的集合下所有集合元素求值
查看>>
电脑运行 apk
查看>>
PHPExcel读取Excel文件
查看>>
最近写的一个Win8的看漫画程序
查看>>