区分不同的user-agent

本文介绍了如何通过解析HTTP请求头中的User-Agent字段来识别不同的客户端来源,包括Android、iOS设备上的微信、小程序、自定义APP及PC端等,并提供了具体的User-Agent样例和Java实现代码。
部署运行你感兴趣的模型镜像

最近项目需求,需要根据不同的客户端来源做不同的操作。最终敲定一下解决方案

首先,请求中都带有userAgent,我们可以根据userAgent的不同来区分

微信的userAgent中都有MicroMessenger

第一、不同来源的userAgent的区别

1、Android 系统下不同手机中微信的user-agent

Mozilla/5.0 (Linux; Android 7.1.1; MI 6 Build/NMF26X; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2 TBS/043807 Mobile Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/WIFI Language/zh_CN
Mozilla/5.0 (Linux; Android 7.1.1; OD103 Build/NMF26F; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043632 Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/4G Language/zh_CN
Mozilla/5.0 (Linux; Android 6.0.1; SM919 Build/MXB48T; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043632 Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/WIFI Language/zh_CN
Mozilla/5.0 (Linux; Android 5.1.1; vivo X6S A Build/LMY47V; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043632 Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/WIFI Language/zh_CN
Mozilla/5.0 (Linux; Android 5.1; HUAWEI TAG-AL00 Build/HUAWEITAG-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043622 Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/4G Language/zh_CN

2、iPhone 系统下的微信 user-agent

Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13F69 MicroMessenger/6.6.1 NetType/4G Language/zh_CN
Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_2 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Mobile/15C202 MicroMessenger/6.6.1 NetType/4G Language/zh_CN
Mozilla/5.0 (iPhone; CPU iPhone OS 11_1_1 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Mobile/15B150 MicroMessenger/6.6.1 NetType/WIFI Language/zh_CN
Mozilla/5.0 (iphone x Build/MXB48T; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043632 Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/WIFI Language/zh_CN

3、微信内置浏览器与小程序中的 user-agent主要区别是小程序多了一个miniProgram

# 安卓系统中小程序 User Agent
Mozilla/5.0 (Linux; Android 7.1.1; MI 6 Build/NMF26X; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2 TBS/043807 Mobile Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/4G Language/zh_CN MicroMessenger/6.6.1.1220(0x26060135) NetType/4G Language/zh_CN miniProgram
# 安卓系统中微信内置浏览器 User Agent
Mozilla/5.0 (Linux; Android 7.1.1; MI 6 Build/NMF26X; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2 TBS/043807 Mobile Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/4G Language/zh_CN

4、PC端的user-agent

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36

自己公司开发的APP的user-agent是可以自己在里面添加东西的

比如在user-agent最后加上[MY_APP_iOS/1.0.0],这样就能根据这个加在最后的字符串来判断了

Mozilla/5.0 (iPhone; CPU iPhone OS 11_2 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Mobile/15C107[MY_APP_iOS/1.0.0]

2、编写程序来判断

package com.pocher.demo.SourceAnalysis;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;


/**
 * @author 
 * @date 
 */
@RestController
@RequestMapping("/analysis")
public class Analysiser {
    @Autowired
    HttpServletRequest request;

    @RequestMapping("/expert")
    public String expert(HttpServletRequest request){
        String header = request.getHeader("user-agent");
        String clientType = "";
        if(header.contains("Android")) {
            clientType = "Android移动客户端";
            System.out.println("Android移动客户端");
        } else if(header.contains("iPhone")) {
            clientType = "iPhone移动客户端";
            System.out.println("iPhone移动客户端");
        } else if(header.contains("iPad")) {
            clientType = "iPad客户端";
            System.out.println("iPad客户端");
        } else if(header.contains("Window")) {
            clientType = "PC端";
            System.out.println("PC端");
        } else if(header.contains("MY_APP_iOS/1.0.0")) {
            clientType = "App端";
            System.out.println("App端");
        } else if(header.contains("miniProgram")) {
            clientType = "微信小程序端";
            System.out.println("微信小程序端");
        } else {
            clientType = "其他客户端";
            System.out.println("其他客户端");
        }
        return clientType;
    }

}

其他userAgent

设备系统浏览器User-Agent
iPhoneIOSQQ浏览器Mozilla/5.0 (iPhone 84; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.0 MQQBrowser/7.8.0 Mobile/14G60 Safari/8536.25 MttCustomUA/2 QBWebViewType/1 WKType/1
荣耀9AndroidQQ浏览器Mozilla/5.0 (Linux; Android 7.0; STF-AL10 Build/HUAWEISTF-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043508 Safari/537.36 V1_AND_SQ_7.2.0_730_YYB_D QQ/7.2.0.3270 NetType/4G WebP/0.3.0 Pixel/1080
iPhoneIOS微信Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60 MicroMessenger/6.5.18 NetType/WIFI Language/en
vivo Xplay5AAndroid手机百度Mozilla/5.0 (Linux; Android 5.1.1; vivo Xplay5A Build/LMY47V; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/48.0.2564.116 Mobile Safari/537.36 T7/9.3 baiduboxapp/9.3.0.10 (Baidu; P1 5.1.1)
荣耀9AndroidQQ浏览器Mozilla/5.0 (Linux; U; Android 7.0; zh-cn; STF-AL00 Build/HUAWEISTF-AL00) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/7.9 Mobile Safari/537.36
乐视乐S3Android手机百度Mozilla/5.0 (Linux; Android 6.0; LEX626 Build/HEXCNFN5902606111S) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/35.0.1916.138 Mobile Safari/537.36 T7/7.4 baiduboxapp/8.3.1 (Baidu; P1 6.0)
iPhoneIOSQQ浏览器Mozilla/5.0 (iPhone 92; CPU iPhone OS 10_3_2 like Mac OS X) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.0 MQQBrowser/7.7.2 Mobile/14F89 Safari/8536.25 MttCustomUA/2 QBWebViewType/1 WKType/1
联想ZUK Z2 ProAndroidUC浏览器Mozilla/5.0 (Linux; U; Android 7.0; zh-CN; ZUK Z2121 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.6.8.952 Mobile Safari/537.36
iPhoneIOS微信Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Mobile/15A372 MicroMessenger/6.5.17 NetType/WIFI Language/zh_HK
三星GALAXY C7AndroidUC浏览器Mozilla/5.0 (Linux; U; Android 6.0.1; zh-CN; SM-C7000 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.6.2.948 Mobile Safari/537.36
TCL 580AndroidQQ浏览器MQQBrowser/5.3/Mozilla/5.0 (Linux; Android 6.0; TCL 580 Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.98 Mobile Safari/537.36
iPhoneIOS微信Mozilla/5.0 (iPhone; CPU iPhone OS 10_2 like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Mobile/14C92 MicroMessenger/6.5.16 NetType/WIFI Language/zh_CN
小米4SAndroidMIUI浏览器Mozilla/5.0 (Linux; U; Android 5.1.1; zh-cn; MI 4S Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.146 Mobile Safari/537.36 XiaoMi/MiuiBrowser/9.1.3
三星GALAXY S8+AndroidUC浏览器Mozilla/5.0 (Linux; U; Android 7.0; zh-CN; SM-G9550 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.7.0.953 Mobile Safari/537.36
魅蓝note 3Android手机百度Mozilla/5.0 (Linux; Android 5.1; m3 note Build/LMY47I; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/48.0.2564.116 Mobile Safari/537.36 T7/9.3 baiduboxapp/9.3.0.10 (Baidu; P1 5.1)

参考:https://zhangzifan.com/wechat-user-agent.html

http://www.fynas.com/ua

 

转载于:https://my.oschina.net/wangyuzhan/blog/1648765

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think>嗯,我现在需要帮用户分析这段robots.txt的代码。首先,我得回忆一下robots.txt的基本结构。它主要是用来指导网络爬虫哪些页面可以访问,哪些不可以。每个User-agent后面跟着Allow和Disallow指令,对吧? 用户提供的代码看起来分成几个部分。首先是针对Baiduspider的,然后是对其他爬虫的设置,最后是通配符User-agent: *。我需要逐一检查每个User-agent对应的规则是否正确。 首先看Baiduspider的部分。这里Allow: / 应该是允许访问根目录,但接下来有几个Disallow的路径,比如/pcdutu、/pcdutu/p_list等。这些路径可能是不想让百度爬虫抓取的。不过这里有个疑问,Allow: / 是允许整个网站,但后面又Disallow特定路径,这样是否有效?应该是有效的,因为后面的Disallow会覆盖前面的Allow吗?或者robots.txt的规则是顺序无关的,以更具体的路径为准? 然后其他爬虫,比如Googlebot、MSNBot等,都是Allow: /,也就是允许访问整个网站。看起来用户希望这些搜索引擎可以抓取所有内容,而只对百度爬虫做了限制。 最后User-agent: * 也就是所有其他爬虫,Disallow: /,也就是禁止所有访问。这部分需要注意,通常这个通配符会覆盖之前没提到的爬虫,但这里之前的各个爬虫都有明确的Allow,所以应该没问题。不过要确认是否有重复的User-agent被覆盖的情况。 另外,检查语法是否正确。每个User-agent后面是否都有对应的规则,指令是否正确。比如Allow和Disallow后面是否有正确的路径。比如Disallow的路径是否正确,有没有拼写错误。例如,/search/detailidlsimipic这个路径是否有问题?可能需要用户确认是否存在这个路径。 还有,Baiduspider-image是百度图片爬虫,这里也允许了所有,但主Baiduspider却有一些Disallow。可能需要确认是否图片爬虫和其他百度爬虫的区分是否正确。 用户可能想知道这段代码的效果是什么。总结来说,就是允许大部分主流爬虫(Google、Bing、搜狗等)抓取整个网站,但限制百度爬虫访问特定目录,同时禁止其他未指定的爬虫访问任何内容。 有没有可能存在的问题呢?比如,Disallow的路径是否应该以斜杠开头,这里看起来是的。另外,是否有重复的User-agent定义?比如Baiduspider和其他百度相关的爬虫是否会被通配符影响?但在这里,Baiduspider和其他百度爬虫都有明确的Allow,所以通配符的Disallow不会影响到它们,因为User-agent的匹配是精确优先的。 总的来说,这段robots.txt的配置主要是限制百度主爬虫抓取某些路径,同时允许其他搜索引擎全面抓取,并屏蔽其他未被明确允许的爬虫。需要确保被Disallow的路径确实不需要被百度收录,否则可能会影响网站在百度搜索中的可见性。</think>以下是对该robots.txt文件的逐步分析: $$robots.txt \text{分析流程图}$$ \begin{tikzpicture} \node[draw] (start) at (0,0) {开始解析}; \node[draw] (ua) at (0,-2) {解析User-agent字段}; \node[draw] (baidu) at (-3,-4) {Baiduspider规则组}; \node[draw] (others) at (3,-4) {其他爬虫规则组}; \node[draw] (wildcard) at (0,-6) {通配符规则组}; \draw[->] (start) -- (ua); \draw[->] (ua) -- node[left]{匹配百度} (baidu); \draw[->] (ua) -- node[right]{匹配Googlebot等} (others); \draw[->] (ua) -- node{默认处理} (wildcard); \end{tikzpicture} $$ 一、**文件结构解析** 1. 包含6个独立规则组,按优先级排序: - 特定爬虫规则(Baiduspider) - 其他11个指定爬虫规则 - 通配符规则(*) 2. **路径匹配规则**: - 所有路径均以`/`开头,符合标准语法 - 路径含多级目录,如`/pcdutu/p_list` 二、**百度爬虫专项控制** 1. **特殊限制路径**: ```plaintext Disallow: /pcdutu // 禁止目录 Disallow: /pcdutu/p_list // 禁止子目录 Disallow: /n/pc_list // 动态列表页 Disallow: /n/pc_search // 搜索功能 Disallow: /search/detailidlsimipic // 特定详情页 ``` 2. **策略分析**: - 通过`Allow: /`开放全站访问权限 - 使用5个`Disallow`精准拦截敏感路径 - 防止百度抓取:重复列表页、搜索功能、特定详情页 三、**其他爬虫开放策略** 1. **覆盖主流搜索引擎**: ```plaintext Googlebot(谷歌) MSNBot(必应) Sogou系列(搜狗) YoudaoBot(有道) yisouspider(神马) ChinasoSpider(中国搜索) ``` 2. **权限设置**: - 全部使用`Allow: /`授予全站访问权限 - 无任何限制条款,支持深度抓取 四、**安全防护机制** 1. **通配符规则**: ```plaintext User-agent: * Disallow: / ``` - 拦截所有未明确列出的爬虫 - 防止恶意爬虫消耗服务器资源 五、**潜在优化建议** 1. **路径验证建议**: - 检查`/search/detailidlsimipic`路径有效性 - 确认`/n/pc_list`是否需要完全屏蔽 2. **百度子爬虫处理**: - `Baiduspider-image`单独设置`Allow: /` - 确保图片资源能被正常收录 3. **版本控制建议**: - 增加注释行(如:`# Version 2023`) - 使用Sitemap声明(如:`Sitemap: https://example.com/sitemap.xml`) 该配置体现了精准的访问控制策略,在保障主流搜索引擎收录的同时,有效保护敏感数据。建议定期使用Google Search Console和百度站长工具验证规则有效性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值