Python爬虫小技巧之伪造随机的User-Agent
前言
不管是做开发还是做过网站的朋友们,应该对于user agent一点都不陌生,user agent 中文名为用户代理,简称 ua,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、cpu 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等
在python爬虫的过程中经常要模拟useragent, 因此自动生成useragent十分有用
通过ua来判断不同的设备或者浏览器是开发者最常用的方式方法,这个也是对于python反爬的一种策略,但是有盾就有矛啊
写好爬虫的原则只有一条:
就是让你的抓取行为和用户访问网站的真实行为尽量一致
1、伪造ua字符串,每次请求都使用随机生成的ua
为了减少复杂度,随机生成ua的功能通过第三方模块库fake-useragent实现,使用pip进行安装
pip install fake-useragent
2、生成一个ua字符串只需要如下代码
from fake_useragent import useragent ua = useragent()
各浏览器的user-agent
这个库还有一个其他的功能,就是可以随机各浏览器的ua
ie浏览器的ua:
print(ua.ie)
mozilla/5.0 (windows; u; msie 9.0; windows nt 9.0; en-us)
opera浏览器的ua:
print(ua.opera)
opera/9.80 (windows nt 6.1; u; zh-cn) presto/2.6.37 version/11.00
chrome浏览器的ua:
print(ua.chrome)
mozilla/5.0 (windows nt 6.1) applewebkit/537.2 (khtml, like gecko) chrome/22.0.1216.0 safari/537.2
firefox浏览器的ua:
print(ua.firefox)
mozilla/5.0 (windows nt 6.2; win64; x64; rv:16.0.1) gecko/20121011 firefox/16.0.1
safari浏览器的ua:
print(ua.safari)
mozilla/5.0 (ipad; cpu os 6_0 like mac os x) applewebkit/536.26 (khtml, like gecko) version/6.0 mobile/10a5355d safari/8536.25
随机user-agent
写爬虫最实用的就是可以随意变换headers,一定要有随机性
在这里我写了三个随机生成ua,三次打印都不一样,随机性很强,十分方便
print(ua.random) print(ua.random) print(ua.random)
mozilla/5.0 (x11; cros i686 3912.101.0) applewebkit/537.36 (khtml, like gecko) chrome/27.0.1453.116 safari/537.36
mozilla/5.0 (macintosh; intel mac os x 10_10_1) applewebkit/537.36 (khtml, likegecko) chrome/37.0.2062.124 safari/537.36
mozilla/5.0 (macintosh; intel mac os x 10_9_0) applewebkit/537.36 (khtml, like gecko) chrome/32.0.1664.3 safari/537.36
当然,你如果不想这么用的话,你也可以自己搜集一些ua,存为文本文件,然后打开读取来用
附:常用的user-agent列表
user_agents = [ "mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; sv1; acoobrowser; .net clr 1.1.4322; .net clr 2.0.50727)", "mozilla/4.0 (compatible; msie 7.0; windows nt 6.0; acoo browser; slcc1; .net clr 2.0.50727; media center pc 5.0; .net clr 3.0.04506)", "mozilla/4.0 (compatible; msie 7.0; aol 9.5; aolbuild 4337.35; windows nt 5.1; .net clr 1.1.4322; .net clr 2.0.50727)", "mozilla/5.0 (windows; u; msie 9.0; windows nt 9.0; en-us)", "mozilla/5.0 (compatible; msie 9.0; windows nt 6.1; win64; x64; trident/5.0; .net clr 3.5.30729; .net clr 3.0.30729; .net clr 2.0.50727; media center pc 6.0)", "mozilla/5.0 (compatible; msie 8.0; windows nt 6.0; trident/4.0; wow64; trident/4.0; slcc2; .net clr 2.0.50727; .net clr 3.5.30729; .net clr 3.0.30729; .net clr 1.0.3705; .net clr 1.1.4322)", "mozilla/4.0 (compatible; msie 7.0b; windows nt 5.2; .net clr 1.1.4322; .net clr 2.0.50727; infopath.2; .net clr 3.0.04506.30)", "mozilla/5.0 (windows; u; windows nt 5.1; zh-cn) applewebkit/523.15 (khtml, like gecko, safari/419.3) arora/0.3 (change: 287 c9dfb30)", "mozilla/5.0 (x11; u; linux; en-us) applewebkit/527+ (khtml, like gecko, safari/419.3) arora/0.6", "mozilla/5.0 (windows; u; windows nt 5.1; en-us; rv:1.8.1.2pre) gecko/20070215 k-ninja/2.1.1", "mozilla/5.0 (windows; u; windows nt 5.1; zh-cn; rv:1.9) gecko/20080705 firefox/3.0 kapiko/3.0", "mozilla/5.0 (x11; linux i686; u;) gecko/20070322 kazehakase/0.4.5", "mozilla/5.0 (x11; u; linux i686; en-us; rv:1.9.0.8) gecko fedora/1.9.0.8-1.fc10 kazehakase/0.5.6", "mozilla/5.0 (windows nt 6.1; wow64) applewebkit/535.11 (khtml, like gecko) chrome/17.0.963.56 safari/535.11", "mozilla/5.0 (macintosh; intel mac os x 10_7_3) applewebkit/535.20 (khtml, like gecko) chrome/19.0.1036.7 safari/535.20", "opera/9.80 (macintosh; intel mac os x 10.6.8; u; fr) presto/2.9.168 version/11.52", ]
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
原文链接:
上一篇: vue对象的深层复制解析