通过查看 http 请求的内容,是否可以区分
A:用户在浏览器中手动发送的 http 请求
和
B:网页自动发送的http请求(即获取其他资源)。
最好的观察地点是哪里?
谢谢
答案1
是与否:
用户代理标头
一般来说,实际的浏览器和开发人员常用的库都会设置一个 User-Agent 标头来标识“浏览器”或库。
没有用户代理标头的请求很可能是由代码而不是实际的 Web 浏览器生成的。
例如,常用的 libcurl 库没有设置默认的用户代理标头 https://curl.haxx.se/libcurl/c/CURLOPT_USERAGENT.html
其他库可能会设置用户代理标头,帮助您识别请求是由代码而不是由特定用户代理(子)字符串的人发出的。
但是开发人员可以决定设置任何用户代理并使用与真实浏览器使用的标头相同的标头,因此这不是 100% 可靠的......
相关请求
您的网页经常包含图像、样式表和其他嵌入内容。真正的浏览器几乎肯定会在检索到主网页时立即开始加载这些内容。
当只有 html 被抓取但没有检索到任何图像或其他内容时,您可以得出结论,请求者可能不是人。
IP 查找
虽然不太可靠,但可以使用地理 IP 数据库从发出请求的 IP 地址获取详细信息。ISP 为住宅 ADSL 用户使用的范围内的 IP 地址比 VPS 提供商(例如 Google Cloud 或 AWS)使用的范围内的 IP 地址更有可能是个人...