是一个大好人 2021-11-02 20:35 采纳率: 100%
浏览 21
已结题

在有标头的情况下,服务器是怎么区分浏览器和爬虫的?

程序源代码


import requests
import re

# 头部
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40'}
url = 'https://815864.yichafen.com'


def ask(primary_url):
    # 爬
    got = requests.get(primary_url, headers=header)
    # 源代码
    text = got.text
    print(text)
    return text


def analysis(code):
    # 源代码
    source_code = code

    # 寻找超链接
    # 正则
    re_test_name = r'<a style="margin-left:10px;"\t\t\t\t\thref=".+" target="_blank">.{0,30}</a>'
    # 找
    results = re.findall(re_test_name, source_code)
    print(results)


def main():
    analysis(ask(url))


if __name__ == '__main__':
    main()

访问几次之后的结果,其中标红部分是每次都会改变的

img

但是在浏览器中不会被阻止

请问服务器是怎么区分浏览器和爬虫的?

  • 写回答

1条回答 默认 最新

  • CSDN专家-showbo 2021-11-02 20:41
    关注

    还有cookie,比如网站使用了session,会生成对应的cookie发送到客户端,如asp.net的ASP.NET_SessionId,php和jsp也有对应的cookie。

    要保持是同一个请求,需要附带上cookie内容

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月11日
  • 已采纳回答 11月3日
  • 创建了问题 11月2日