python访问网页如何查看user-agent_HTTP请求头之User-Agent
前言
之前學(xué)習(xí)北京理工嵩天老師的《Python網(wǎng)絡(luò)爬蟲與信息提取》時(shí),爬取亞馬遜的一款圖書的詳細(xì)信息時(shí)出現(xiàn)以下錯(cuò)誤:
![Upload 亞馬遜爬蟲.PNG failed. Please try again.]
查看請(qǐng)求信息,發(fā)現(xiàn)我們一般寫的爬蟲會(huì)默認(rèn)告訴服務(wù)器自己發(fā)送了一個(gè)Python爬取請(qǐng)求,而一般網(wǎng)站是不允許被爬蟲訪問的,估計(jì)是因?yàn)闀?huì)涉及到商業(yè)問題。最后,通過更改User-Agent字段就可以輕易騙過該網(wǎng)站。
那么User-Agent到底是什么呢?
User-Agent會(huì)告訴網(wǎng)站服務(wù)器,訪問者是通過什么工具來請(qǐng)求的,如果是爬蟲請(qǐng)求,一般會(huì)拒絕,如果是用戶瀏覽器,就會(huì)應(yīng)答。
又該如何使用呢?
調(diào)試工具
最簡單的方法就是按照下面步驟進(jìn)行
打開你要爬蟲的網(wǎng)頁
按鍵盤的F12或手動(dòng)去瀏覽器右上角的“更多工具”選項(xiàng)選擇開發(fā)者工具
按鍵盤的F5刷新網(wǎng)頁
點(diǎn)擊Network,再點(diǎn)擊Doc
點(diǎn)擊Headers,查看Request Headers的User-Agent字段,直接復(fù)制
將剛才復(fù)制的User-Agent字段構(gòu)造成字典形式
什么?你想搞懂這個(gè)User-Agent字段,然后自己構(gòu)建。
User-Agent字段解釋
簡要版解釋:
我用的Chrome瀏覽器,查看User-Agent的結(jié)果:
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 (平臺(tái)) 引擎版本 瀏覽器版本號(hào)
第一部分:Mozilla/5.0
由于歷史上的瀏覽器大戰(zhàn),當(dāng)時(shí)想獲得圖文并茂的網(wǎng)頁,就必須宣稱自己是 Mozilla 瀏覽器。此事導(dǎo)致如今User-Agent里通常都帶有Mozilla字樣,出于對(duì)歷史的尊重,大家都會(huì)默認(rèn)填寫該部分。
第二部分:平臺(tái)這部分可由多個(gè)字符串組成,用英文半角分號(hào)分開
Windows NT 10.0是指我使用的操作系統(tǒng)的版本,比如我使用的win10對(duì)應(yīng)的就是Windows NT 10.0,如果我使用win7對(duì)應(yīng)的就是Windows NT 6.1。
Win64; x64是指我的操作系統(tǒng)是64位的
Windows系統(tǒng)下:
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系統(tǒng)下:
X11; Linux i686; // Linux 桌面,i686 版本
X11; Linux x86_64; // Linux 桌面,x86_64 版本
X11; Linux i686 on x86_64 // Linux 桌面,運(yùn)行在 x86_64 的 i686 版本
macOS系統(tǒng)下:
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; // 不用下劃線,用點(diǎn)
第三部分:引擎版本
AppleWebKit/537.36 (KHTML, like Gecko)...Safari/537.36,歷史上,蘋果依靠了WebKit內(nèi)核開發(fā)出Safari瀏覽器,WebKit包含了WebCore引擎,而WebCore又從KHTML衍生而來。由于歷史原因,KHTML引擎需要聲明自己是“類似Gecko”的,因此引擎部分這么寫。再后來,Google開發(fā)Chrome也是用了WebKit內(nèi)核,于是也跟著這么寫。借用Littern的一句話:“Chrome 希望能得到為Safari編寫的網(wǎng)頁,于是決定裝成Safari,Safari使用了WebKit渲染引擎,而WebKit呢又偽裝自己是KHTML,KHTML呢又是偽裝成Gecko的。同時(shí)所有的瀏覽器又都宣稱自己是Mozilla。”。不過,后來Chrome 28某個(gè)版本改用了blink內(nèi)核,但還是保留了這些字符串。而且,最近的幾十個(gè)版本中,這部分已經(jīng)固定,沒再變過
第四部分:瀏覽器版本
本人用的是Chrome瀏覽器,其中60.0 是大版本,3100是持續(xù)增大的一個(gè)數(shù)字,而0則是修補(bǔ)漏洞的小版本。
最后,居然有大佬封裝了不同操作系統(tǒng)不同瀏覽器的User-Agent:User-Agent封裝使用教程
總結(jié)
以上是生活随笔為你收集整理的python访问网页如何查看user-agent_HTTP请求头之User-Agent的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解除屏蔽!微信已可正常跳转抖音链接
- 下一篇: python中常见的流程_Python面