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

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

程序源代码


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日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改