爬虫笔记(9/30)---------爬虫伪装技术

来源:互联网 发布:淘宝立体3d服装制作 编辑:程序博客网 时间:2024/05/21 06:50

反爬虫机制主要有:

(1)分析用户请求的Headers信息进行反爬虫------反爬虫会对用户请求的Headers信息的“User-Agent”进行检测;反爬虫网站还会对“Referer”字段进行检测

(2)检测用户行为,ip在短时间内是否频繁访问------使用代理服务器,经常切换

(3)动态页面增加爬虫难度-------利用工具软件(selenium+phantomJS)

 

常见头信息中字段含义

1.Accept:text/hrml,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

~Accept:浏览器能够支持的内容类型

~text/html:html文档

~application/xhtml+xml:xhtml文档

~q:权重系数(介于0-1)

2.Accept-Encoding:gzip,deflate

~Accept-Encoding:压缩编码有哪些

~gzip:压缩编码的一种

~deflate:无损数据压缩算法

3.Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3

~Accept-Language:浏览器支持的语言

~zh-CN:简体中文,zh中文,CN简体

~en-US:英语(美国)语言

~en:英语语言

4.User-Agent:Mozilla/5.0(WindowsNT6.1;WOW64;rv:47.0)Gecko/20100101Firefox/47.0

~User-Agent:用户代理

~Mozilla/5.0:浏览器名及其版本

~WindowsNT6.1;WOW64;rv:47.0:客户端操作系统对应信息

~Gecko:网页排版引擎对应信息

~Firefox:火狐浏览器

5.Connection:keep-alive

~Connection:客户端与服务器链接类型

~~keep-alive:持久性链接

~~close:单方面关闭链接,让链接断开

~Host:请求的服务器网址是什么

6.Referer:网址

~Referer来源网址地址

 

伪装成浏览器:

1.通过opener.addheaders为爬虫添加Headers信息

import urllib.request

import http.cookiejar

url ="http://news.163.com/16/0285/09/BVA8A9U500014SEH.html"

#以字典的形式设置headers

headers ={"Accept":"text/html,application/xhtml+html,application/xml;q=0.9,*/*;q=0.8","Accept-Language":"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3","User-Agent":"Mozilla/5.0(WindowsNT 601;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr1.0","Connection":"keep-alive","referer":"http://www.163.com"}

#设置cookie

cjar = http.cookiejar,CookieJar()

proxy =urllib.request.ProxyHandler({'http':"127.0.0.1:8888"})

opener =urllib.request.bulid_opener(proxy,urllib.request.HTTPHandler,urllib.request.HTTPCookieProcessor(cjar))

#建立空列表,为了以指定格式存储头信息

headall = []

#通过for循环遍历字典,构造出指定格式的headers信息

for key,value in headers.items():

    item = (key,value)

    headall.append(item)

#将指定格式的headers信息添加好

opener.addheaders = headall

#将opener安装为全局

urllib.request.install_opener(opener)

data =urllib.request.urlopen(url).read()

fhandle =open("C:/Users/alibaba/Desktop/jupyter/8.html","wb")

fhandle.write(data)

fhandle.close()

注意:

1)如果Accept-Encoding设置gzip,deflate会有乱码,解决方案,省略不写或者设置为utf-8或gb2312

2)使用fiddler作为代理服务器,爬去网址用具体文件或者/结尾

3)referer值设置为网页域名地址或者网站主页网址

 

 

原创粉丝点击