教你快速识别百度蜘蛛(User-Agent)的方法

经常听到开发者问,百度蜘蛛是什么?最近百度蜘蛛来的太频繁服务器抓爆了!最近百度蜘蛛都不来了怎么办?还有很多站点想得到百度蜘蛛的IP段,想把IP加入白名单,但IP地址范围动态变化不固定,我们无法对外公布。

那么如何才能识别正确的百度蜘蛛呢?今日干货带你轻松两步正确识别百度蜘蛛:

 
一、查看UA信息

如果UA信息不对,可以直接判断为非百度搜索的蜘蛛。目前UA分为移动、PC、和小程序三个应用场景,这三个渠道UA分别如下:


移动UA:


Mozilla/5.0 (Linux;u;Android 4.2.2;zh-cn;) AppleWebKit/534.46 (KHTML,like Gecko)Version/5.1 Mobile Safari/10600.6.3 (compatible; Baiduspider/2.0;+http://www.baidu.com/search/spider.html)


Mozilla/5.0 (iPhone;CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko)Version/9.0 Mobile/13B143 Safari/601.1 (compatible; Baiduspider-render/2.0;+http://www.baidu.com/search/spider.html) 


PC UA:

Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)


Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)


小程序UA:
 

Mozilla/5.0 (iPhone;CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko)Version/9.0 Mobile/13B143 Safari/601.1 (compatible; Baiduspider-render/2.0;Smartapp; +http://www.baidu.com/search/spider.html)

二、双向DNS解析认证

第一步:DNS反查IP
 

开发者通过对日志中访问服务器的IP地址运行反向DNS查找,判断某只spider是否来自百度搜索引擎,Baiduspider的hostname以*.baidu.com或*.baidu.jp 的格式命名,非*.baidu.com或*.baidu.jp即为冒充。

根据平台不同验证方法不同,如linux/windows/os三种平台下的验证方法分别如下:

1).在linux平台下,您可以使用host ip命令反解ip来判断是否来自Baiduspider的抓取。

2).在windows平台或者IBM OS/2平台下,您可以使用nslookup ip命令反解ip来 判断是否来自Baiduspider的抓取。打开命令处理器 输入nslookup xxx.xxx.xxx.xxx(IP地址)就能解析ip,来判断是否来自Baiduspider的抓取。

3).在macos平台下,您可以使用dig命令反解ip来判断是否来自Baiduspider的抓取。打开命令处理器输入dig -x xxx.xxx.xxx.xxx(IP地址)就能解析ip,来判断是否来自Baiduspider的抓取。


第二步:对域名运行正向DNS查找
 

对第一步中通过命令检索到的域名运行正向DNS查找,验证该域名与您日志中访问服务器的原始IP地址是否一致,IP地址一致可确认spider来自百度搜索引擎,IP地址不一致即为冒充。

示例1:

> host 111.206.198.69 

69.198.206.111. in-addr.arpa domain name pointer baiduspider-111-206-198-69.crawl.baidu.com. 


> host baiduspider-111-206-198-69.crawl.baidu.com 

baiduspider-111-206-198-69.crawl.baidu.com has address 111.206.198.69

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java的URLConnection类来设置User-Agent,并且可以通过随机生成User-Agent来实现随机化。 以下是一个示例代码: ```java import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.Random; public class Main { private static final List<String> USER_AGENTS = new ArrayList<>(); static { // 添加一些常见的User-Agent USER_AGENTS.add("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"); USER_AGENTS.add("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586"); USER_AGENTS.add("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246"); } public static void main(String[] args) throws IOException { URL url = new URL("https://www.example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("User-Agent", getRandomUserAgent()); connection.connect(); // 处理响应... } private static String getRandomUserAgent() { Random random = new Random(); int index = random.nextInt(USER_AGENTS.size()); return USER_AGENTS.get(index); } } ``` 在该示例中,我们在静态块中添加了一些常见的User-Agent,然后在获取连接时,随机选择一个User-Agent,并设置到连接的请求头中。这样就可以实现随机化User-Agent了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值