python访问网页如何查看user-agent_HTTP请求头之User-Agent
前言
之前学习北京理工嵩天老师的《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相关推荐
- Python爬虫教程之——详解http请求头中的User-agent与Referer
** 重要提示: 本文已迁移至我的个人博客:https://ericnth.cn/essay/2020/04/python-spider-ua-referer/,请前往此链接访问以获得最新的内容,以及 ...
- 网络请求可以返回数据的网站_实例解析|Python加解密VIP网站反爬请求头实现数据爬取...
原文作者:州的先生原文地址:https://zmister.com/archives/812.html 在正常情况下,对于需要登录的网站,一般只要将登录后的cookie携带到headers中就可以实现 ...
- python 访问网页 重定向_Python数据网络采集5--处理Javascript和重定向
Python数据网络采集5--处理Javascript和重定向 到目前为止,我们和网站服务器通信的唯一方式,就是发出HTTP请求获取页面.有些网页,我们不需要单独请求,就可以和网络服务器交互(收发信息 ...
- python访问网页被拒_Python Requests.get访问网页403错误
Pycharm 2018.1, Python 3.6, 通过Pycharm的File->Settings->Plugins搜索Requests安装上去. import requests r ...
- python访问网页速度_python实现用于测试网站访问速率的方法
这是python编写的用于测试网站访问速率的代码片段,可以输出打开某url的时间,访问100次的平均时间,最大时间和最小时间等等 import urllib2 from datetime import ...
- python访问网页变量_Python 如何访问外围作用域中的变量
在表达式中引用变量时,Python 会按照如下的顺序遍历各个作用域,寻找该变量: 当前函数作用域 任何外围作用域(比如包含当前函数的其他函数) global 作用域,即代码所在的模块的作用域 如果上述 ...
- python 访问网页aspx_asp.net – 如何向python中的.aspx页面提交查询
作为概述,您将需要执行四个主要任务: >向网站提交请求, >从站点检索响应 >来解析这些响应 >有一些逻辑来迭代上面的任务,与导航相关的参数(到结果列表中的"下一个& ...
- python访问网页时401_在python上访问带有基本身份验证的网页
我正在尝试使用机械化连接网页,但我收到了http 401错误. 这是我的代码; import base64,mechanize url = "http://www.dogus.edu.tr/ ...
- Python爬虫入门6:模拟浏览器访问网页的http报文体压缩传输
☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一.引言 在前面章节中介绍了使用urllib包的request模块访问网页的方法.但上节特 ...
最新文章
- 使用NetBeans IDE开发C程序
- ppt转换成pdf转换器免费版
- linux shell set 赋值,请教linux下shell 中 set 的用法?
- centos 7用ss命令来查看端口占用和对应进程
- CocoStudio练习笔记3 - 动画编辑器
- EasyUI:Layout 布局
- 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第2节 TCP协议_3_TCP通信的客户端代码实现...
- 中秋福利!开源基础设施峰会9折票!另有限量免费门票!
- php 股票数据 sina,使用Sina API获取新浪财经的证券股票数据接口(时价 K线等)
- 网络安全攻防实验室通关教程-脚本关
- ubuntu 10.04 下安装 wine 所得所获【转】
- 杜一楠的反躬自省与24券的墓志铭
- 飞php影视系统,i.php · 姬晓亮/海洋cms 海洋影视管理系统 - 免费开源PHP - Gitee.com...
- 全景视角下的世界探索——三维全景地图
- 第二章 java语言基础
- 中国医药外包市场发展前景预测与竞争态势分析报告2022-2028年版
- 《晚风》 带来阵阵清凉
- 爱立信高级副总裁柯瑞东:爱立信的“中国任务”
- 给微软免费的文本转语音网站添加下载按钮
- win2012 安装华为U2000 U2000V200R018C60SPC200 解决”使用isql命令连接SQL Server服务失败