和vvv 发表于 2017-6-22 21:05:39

21 爬虫的浏览器伪装技术实战

21 爬虫的浏览器伪装技术实战
一、浏览器伪装技术原理

       我们在爬取某些网站时,由于对方服务器会对爬虫进行屏蔽,出现403(禁止访问)的错误或者其他问题。而我们用浏览器进行访问,则可以正常访问。这是因为,如果不对爬虫进行伪装一下,对方会很容易的判断己方为爬虫。正常情况下,大多数网站是不欢迎爬虫的光临的,因为会对服务器造成很大的开销。
      而由于特殊情况,我们又不得不爬取这类网站。于是,我们可以利用爬虫的浏览器伪装技来实现。浏览器伪装一般通过报头(headers)进行。


在搜狗浏览器(其他也行)打开百度首页(https://www.baidu.com/),按“F12”,将上方的标签切换到“Network”(图中红色椭圆处)。再按“F5”刷新网页。






然后在出现的连接中任意点击一个,切换到“Headers”。然后点开“Request Headers”选项,可以找到“User-Agent:”(用户代理)这一项,这就是浏览器的标识。换句话说,如果你是用浏览器访问的这个网站,那么这个标识符将会是对应浏览器的。如果你用的是爬虫访问这个网站,它将会是爬虫的标识。而我们的爬虫要进行伪装,就是把这个User-Agent字段改成正规的标识(如浏览器的)。




二、浏览器伪装技术的实现


       由于urlopen()对于一些HTTP的高级功能不支持,所以,如果我们要修改报头,则可以使用urllib.request.build_opener()方法。当然,也可以使用urllib.request.Request()实现浏览器的模拟。重点在前者,后者在后面的学习中才会用到。


(1)
头文件格式:headers = ("User-Agent",具体用户代理值)
headers = ("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0")
import urllib.request
url = "http://blog.csdn.net/"
#构造头,就是User-Agent的内容
headers = ("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0")
#利用
opener = urllib.request.build_opener()
opener.addheaders =
#将opener安装为全局,让urlopen()访问时也添加对应报头
urllib.request.install_opener(opener)
data1 = opener.open(url).read()
data2 = urllib.request.urlopen("http://blog.csdn.net/").read()
print(len(data1))
print(len(data2))62532
62532

其中,将opener安装为全局,让urlopen()访问时也添加对应报头,这对于以后的稍微复杂的爬虫是十分方便的。


(2)使用Request(),但是其headers必须是字典类型。import urllib.request
url = "http://blog.csdn.net/"
#构造头,就是User-Agent的内容(使用Request()的headers必须是字典类型
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"}
req = urllib.request.Request(url,headers=headers)
data=urllib.request.urlopen(req).read()
print(len(data))62533

总结一下,为了实现爬虫的“合法化”,我们需要对爬虫进行伪装(很多时候是必须的)。可以使用urllib.request.build_opener()方法。当然,也可以使用urllib.request.Request()或者其他的方法。






龙舞九天 发表于 2021-5-31 15:00:38

{:5_95:}
页: [1]
查看完整版本: 21 爬虫的浏览器伪装技术实战