UserAgent簡介
UserAgent中文名為用戶代理,是Http協議中的一部分,屬於頭域的組成部分,UserAgent也簡稱UA。它是一個特殊字符串頭,是一種向訪問網站提供你所使用的瀏覽器類型及版本、操作系統及版本、瀏覽器內核、等信息的標識。通過這個標識,用戶所訪問的網站可以顯示不同的排版從而為用戶提供更好的體驗或者進行信息統計;例如用手機訪問谷歌和電腦訪問是不一樣的,這些是谷歌根據訪問者的UA來判斷的。UA可以進行偽裝。
瀏覽器的UA字串的標准格式:瀏覽器標識(操作系統標識;加密等級標識;瀏覽器語言)渲染引擎標識版本信息。但各個瀏覽器有所不同。
我們在做爬蟲的時候,不是通過瀏覽器正常訪問,所以會被很多網站禁止訪問,這個時候我們就需要手動在headers里加上UA屬性,來偽裝成瀏覽器進行訪問。
常見的UserAgent值
1. PC端: safari5.1–MAC User-Agent:Mozilla/5.0(Macintosh;U;IntelMacOSX10_6_8;en-us)AppleWebKit/534.50(KHTML,likeGecko)Version/5.1Safari/534.50 safari5.1–Windows User-Agent:Mozilla/5.0(Windows;U;WindowsNT6.1;en-us)AppleWebKit/534.50(KHTML,likeGecko)Version/5.1Safari/534.50 IE9.0 User-Agent:Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Trident/5.0; IE8.0 User-Agent:Mozilla/4.0(compatible;MSIE8.0;WindowsNT6.0;Trident/4.0) IE7.0 User-Agent:Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.0) IE6.0 User-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1) Firefox4.0.1–MAC User-Agent:Mozilla/5.0(Macintosh;IntelMacOSX10.6;rv:2.0.1)Gecko/20100101Firefox/4.0.1 Firefox4.0.1–Windows User-Agent:Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/4.0.1 Opera11.11–MAC User-Agent:Opera/9.80(Macintosh;IntelMacOSX10.6.8;U;en)Presto/2.8.131Version/11.11 Opera11.11–Windows User-Agent:Opera/9.80(WindowsNT6.1;U;en)Presto/2.8.131Version/11.11 Chrome17.0–MAC User-Agent:Mozilla/5.0(Macintosh;IntelMacOSX10_7_0)AppleWebKit/535.11(KHTML,likeGecko)Chrome/17.0.963.56Safari/535.11 傲游(Maxthon) User-Agent:Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;Maxthon2.0) 騰訊TT User-Agent:Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;TencentTraveler4.0) 世界之窗(TheWorld)2.x User-Agent:Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1) 世界之窗(TheWorld)3.x User-Agent:Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;TheWorld) 搜狗瀏覽器1.x User-Agent:Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;Trident/4.0;SE2.XMetaSr1.0;SE2.XMetaSr1.0;.NETCLR2.0.50727;SE2.XMetaSr1.0) 360瀏覽器 User-Agent:Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;360SE) Avant User-Agent:Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;AvantBrowser) GreenBrowser User-Agent:Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1) 2、移動設備端: safariiOS4.33–iPhone User-Agent:Mozilla/5.0(iPhone;U;CPUiPhoneOS4_3_3likeMacOSX;en-us)AppleWebKit/533.17.9(KHTML,likeGecko)Version/5.0.2Mobile/8J2Safari/6533.18.5 safariiOS4.33–iPodTouch User-Agent:Mozilla/5.0(iPod;U;CPUiPhoneOS4_3_3likeMacOSX;en-us)AppleWebKit/533.17.9(KHTML,likeGecko)Version/5.0.2Mobile/8J2Safari/6533.18.5 safariiOS4.33–iPad User-Agent:Mozilla/5.0(iPad;U;CPUOS4_3_3likeMacOSX;en-us)AppleWebKit/533.17.9(KHTML,likeGecko)Version/5.0.2Mobile/8J2Safari/6533.18.5 AndroidN1 User-Agent:Mozilla/5.0(Linux;U;Android2.3.7;en-us;NexusOneBuild/FRF91)AppleWebKit/533.1(KHTML,likeGecko)Version/4.0MobileSafari/533.1 AndroidQQ瀏覽器Forandroid User-Agent:MQQBrowser/26Mozilla/5.0(Linux;U;Android2.3.7;zh-cn;MB200Build/GRJ22;CyanogenMod-7)AppleWebKit/533.1(KHTML,likeGecko)Version/4.0MobileSafari/533.1 AndroidOperaMobile User-Agent:Opera/9.80(Android2.3.4;Linux;OperaMobi/build-1107180945;U;en-GB)Presto/2.8.149Version/11.10 AndroidPadMotoXoom User-Agent:Mozilla/5.0(Linux;U;Android3.0;en-us;XoomBuild/HRI39)AppleWebKit/534.13(KHTML,likeGecko)Version/4.0Safari/534.13 BlackBerry User-Agent:Mozilla/5.0(BlackBerry;U;BlackBerry9800;en)AppleWebKit/534.1+(KHTML,likeGecko)Version/6.0.0.337MobileSafari/534.1+ WebOSHPTouchpad User-Agent:Mozilla/5.0(hp-tablet;Linux;hpwOS/3.0.0;U;en-US)AppleWebKit/534.6(KHTML,likeGecko)wOSBrowser/233.70Safari/534.6TouchPad/1.0 NokiaN97 User-Agent:Mozilla/5.0(SymbianOS/9.4;Series60/5.0NokiaN97-1/20.0.019;Profile/MIDP-2.1Configuration/CLDC-1.1)AppleWebKit/525(KHTML,likeGecko)BrowserNG/7.1.18124 WindowsPhoneMango User-Agent:Mozilla/5.0(compatible;MSIE9.0;WindowsPhoneOS7.5;Trident/5.0;IEMobile/9.0;HTC;Titan) UC無 User-Agent:UCWEB7.0.2.37/28/999 UC標准 User-Agent:NOKIA5700/UCWEB7.0.2.37/28/999 UCOpenwave User-Agent:Openwave/UCWEB7.0.2.37/28/999 UCOpera User-Agent:Mozilla/4.0(compatible;MSIE6.0;)Opera/UCWEB7.0.2.37/28/999
我們用的時候直接復制即可,放到headers里的對應User-Agent參數
UserAgent的兩種添加方法
1 直接定義一個headers字典,然后傳遞給Request類來實例化一個對象,然后在傳給urlopen,格式如下:
from urllib import request url = 'http://baidu.com' headers = {'User-Agent':'Mozilla/5.0(iPhone;U;CPUiPhoneOS4_3_3likeMacOSX;en-us)AppleWebKit/533.17.9(KHTML,likeGecko)Version/5.0.2Mobile/8J2Safari/6533.18.5'} req = request.Request(url,headers=headers) response = request.urlopen(req) print(response.read().decode())
2.使用add_header()方法
from urllib import request url = 'http://baidu.com' req = request.Request(url) req.add_header('User-Agent','Mozilla/5.0(iPhone;U;CPUiPhoneOS4_3_3likeMacOSX;en-us)AppleWebKit/533.17.9(KHTML,likeGecko)Version/5.0.2Mobile/8J2Safari/6533.18.5') response = request.urlopen(req) print(response.read().decode())
注意:add_header()方法,接收的是兩個參數,分別為鍵值對的兼和值,而非一個字典