爬虫笔记(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值设置为网页域名地址或者网站主页网址
- 爬虫笔记(9/30)---------爬虫伪装技术
- Python3 爬虫(二) -- 伪装浏览器
- Python3 爬虫(二) -- 伪装浏览器
- 爬虫伪装方法分类
- python 爬虫完美伪装
- 2.python爬虫伪装
- Python爬虫伪装
- Python3 爬虫--伪装
- 爬虫的浏览器伪装
- python爬虫浏览器伪装
- Python爬虫笔记----爬虫技术入门(1)
- 爬虫-伪装和防Ban
- 爬虫伪装成浏览器访问
- python 爬虫 伪装成 chrome
- python3爬虫伪装代理IP
- python爬虫系列(四):请求伪装的做法
- 爬虫技术
- 爬虫技术
- 九月英语--坚持topic
- Python 类,函数重载
- 文章标题
- 用settimeout,在dom加载后执行方法
- 九月英语
- 爬虫笔记(9/30)---------爬虫伪装技术
- 杂谈Android身份证识别技术
- Rust : codewars的up AND down 算法
- Ubuntu 安装 Docker
- linux磁盘分区,挂载磁盘,以及卸载磁盘
- <C++ Primer_5th>习题_3.2
- java任务--Volume
- 调整数组顺序使奇数位于偶数前面
- gcc -c