前言

之前学习北京理工嵩天老师的《Python网络爬虫与信息提取》时,爬取亚马逊的一款图书的详细信息时出现以下错误:

![Upload 亚马逊爬虫.PNG failed. Please try again.]

查看请求信息,发现我们一般写的爬虫会默认告诉服务器自己发送了一个Python爬取请求,而一般网站是不允许被爬虫访问的,估计是因为会涉及到商业问题。最后,通过更改User-Agent字段就可以轻易骗过该网站。

那么User-Agent到底是什么呢?

User-Agent会告诉网站服务器,访问者是通过什么工具来请求的,如果是爬虫请求,一般会拒绝,如果是用户浏览器,就会应答。

又该如何使用呢?

调试工具

最简单的方法就是按照下面步骤进行

打开你要爬虫的网页

按键盘的F12或手动去浏览器右上角的“更多工具”选项选择开发者工具

按键盘的F5刷新网页

点击Network,再点击Doc

点击Headers,查看Request Headers的User-Agent字段,直接复制

将刚才复制的User-Agent字段构造成字典形式

什么?你想搞懂这个User-Agent字段,然后自己构建。

User-Agent字段解释

简要版解释:

我用的Chrome浏览器,查看User-Agent的结果:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3100.0 Safari/537.36

User-Agent通常格式:

Mozilla/5.0 (平台) 引擎版本 浏览器版本号

第一部分:Mozilla/5.0

由于历史上的浏览器大战,当时想获得图文并茂的网页,就必须宣称自己是 Mozilla 浏览器。此事导致如今User-Agent里通常都带有Mozilla字样,出于对历史的尊重,大家都会默认填写该部分。

第二部分:平台这部分可由多个字符串组成,用英文半角分号分开

Windows NT 10.0是指我使用的操作系统的版本,比如我使用的win10对应的就是Windows NT 10.0,如果我使用win7对应的就是Windows NT 6.1。

Win64; x64是指我的操作系统是64位的

Windows系统下:

Windows NT 5.0 // 如 Windows 2000

Windows NT 5.1 // 如 Windows XP

Windows NT 6.0 // 如 Windows Vista

Windows NT 6.1 // 如 Windows 7

Windows NT 6.2 // 如 Windows 8

Windows NT 6.3 // 如 Windows 8.1

Windows NT 10.0 // 如 Windows 10

Win64; x64 // Win64 on x64

WOW64 // Win32 on x64

Linux系统下:

X11; Linux i686; // Linux 桌面,i686 版本

X11; Linux x86_64; // Linux 桌面,x86_64 版本

X11; Linux i686 on x86_64 // Linux 桌面,运行在 x86_64 的 i686 版本

macOS系统下:

Macintosh; Intel Mac OS X 10_9_0 // Intel x86 或者 x86_64

Macintosh; PPC Mac OS X 10_9_0 // PowerPC

Macintosh; Intel Mac OS X 10.12; // 不用下划线,用点

第三部分:引擎版本

AppleWebKit/537.36 (KHTML, like Gecko)...Safari/537.36,历史上,苹果依靠了WebKit内核开发出Safari浏览器,WebKit包含了WebCore引擎,而WebCore又从KHTML衍生而来。由于历史原因,KHTML引擎需要声明自己是“类似Gecko”的,因此引擎部分这么写。再后来,Google开发Chrome也是用了WebKit内核,于是也跟着这么写。借用Littern的一句话:“Chrome 希望能得到为Safari编写的网页,于是决定装成Safari,Safari使用了WebKit渲染引擎,而WebKit呢又伪装自己是KHTML,KHTML呢又是伪装成Gecko的。同时所有的浏览器又都宣称自己是Mozilla。”。不过,后来Chrome 28某个版本改用了blink内核,但还是保留了这些字符串。而且,最近的几十个版本中,这部分已经固定,没再变过

第四部分:浏览器版本

本人用的是Chrome浏览器,其中60.0 是大版本,3100是持续增大的一个数字,而0则是修补漏洞的小版本。

最后,居然有大佬封装了不同操作系统不同浏览器的User-Agent:User-Agent封装使用教程

python访问网页如何查看user-agent_HTTP请求头之User-Agent相关推荐

  1. Python爬虫教程之——详解http请求头中的User-agent与Referer

    ** 重要提示: 本文已迁移至我的个人博客:https://ericnth.cn/essay/2020/04/python-spider-ua-referer/,请前往此链接访问以获得最新的内容,以及 ...

  2. 网络请求可以返回数据的网站_实例解析|Python加解密VIP网站反爬请求头实现数据爬取...

    原文作者:州的先生原文地址:https://zmister.com/archives/812.html 在正常情况下,对于需要登录的网站,一般只要将登录后的cookie携带到headers中就可以实现 ...

  3. python 访问网页 重定向_Python数据网络采集5--处理Javascript和重定向

    Python数据网络采集5--处理Javascript和重定向 到目前为止,我们和网站服务器通信的唯一方式,就是发出HTTP请求获取页面.有些网页,我们不需要单独请求,就可以和网络服务器交互(收发信息 ...

  4. python访问网页被拒_Python Requests.get访问网页403错误

    Pycharm 2018.1, Python 3.6, 通过Pycharm的File->Settings->Plugins搜索Requests安装上去. import requests r ...

  5. python访问网页速度_python实现用于测试网站访问速率的方法

    这是python编写的用于测试网站访问速率的代码片段,可以输出打开某url的时间,访问100次的平均时间,最大时间和最小时间等等 import urllib2 from datetime import ...

  6. python访问网页变量_Python 如何访问外围作用域中的变量

    在表达式中引用变量时,Python 会按照如下的顺序遍历各个作用域,寻找该变量: 当前函数作用域 任何外围作用域(比如包含当前函数的其他函数) global 作用域,即代码所在的模块的作用域 如果上述 ...

  7. python 访问网页aspx_asp.net – 如何向python中的.aspx页面提交查询

    作为概述,您将需要执行四个主要任务: >向网站提交请求, >从站点检索响应 >来解析这些响应 >有一些逻辑来迭代上面的任务,与导航相关的参数(到结果列表中的"下一个& ...

  8. python访问网页时401_在python上访问带有基本身份验证的网页

    我正在尝试使用机械化连接网页,但我收到了http 401错误. 这是我的代码; import base64,mechanize url = "http://www.dogus.edu.tr/ ...

  9. Python爬虫入门6:模拟浏览器访问网页的http报文体压缩传输

    ☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一.引言 在前面章节中介绍了使用urllib包的request模块访问网页的方法.但上节特 ...

最新文章

  1. 使用NetBeans IDE开发C程序
  2. ppt转换成pdf转换器免费版
  3. linux shell set 赋值,请教linux下shell 中 set 的用法?
  4. centos 7用ss命令来查看端口占用和对应进程
  5. CocoStudio练习笔记3 - 动画编辑器
  6. EasyUI:Layout 布局
  7. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第2节 TCP协议_3_TCP通信的客户端代码实现...
  8. 中秋福利!开源基础设施峰会9折票!另有限量免费门票!
  9. php 股票数据 sina,使用Sina API获取新浪财经的证券股票数据接口(时价 K线等)
  10. 网络安全攻防实验室通关教程-脚本关
  11. ubuntu 10.04 下安装 wine 所得所获【转】
  12. 杜一楠的反躬自省与24券的墓志铭
  13. 飞php影视系统,i.php · 姬晓亮/海洋cms 海洋影视管理系统 - 免费开源PHP - Gitee.com...
  14. 全景视角下的世界探索——三维全景地图
  15. 第二章 java语言基础
  16. 中国医药外包市场发展前景预测与竞争态势分析报告2022-2028年版
  17. 《晚风》 带来阵阵清凉
  18. 爱立信高级副总裁柯瑞东:爱立信的“中国任务”
  19. 给微软免费的文本转语音网站添加下载按钮
  20. win2012 安装华为U2000 U2000V200R018C60SPC200 解决”使用isql命令连接SQL Server服务失败

热门文章

  1. hbuilderx 小程序分包_基于uniapp的微信小程序之分包
  2. Subversion 1.5 安装配置指南
  3. 杭州计算机学校哪家好,杭州2021年哪所计算机学校比较好
  4. systemverilog队列
  5. python函数里面引用外部变量_Python基础 变量进阶
  6. unity实现图片轮播效果_Unity实现图片轮播组件
  7. 『操作系统』 进程的描述与控制 Part 1 前驱图与程序执行
  8. 前端必备,Adobe Premiere Pro 常用快捷键
  9. 网络流--最大流--hlpp(预流推进)模板
  10. HDU-1857 畅通工程再续