700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python网络爬虫--浏览器伪装

python网络爬虫--浏览器伪装

时间:2022-08-12 11:40:43

相关推荐

python网络爬虫--浏览器伪装

一.爬虫前言

在我们爬取一些网页的时候可能会失败,因为这写网站为了防止恶意爬虫的访问,会设置一些爬虫机制,常见的爬虫机有:

(1)通过分析用户请求的Headers信息进行反爬虫

(2)通过检测用户行为进行爬虫,比如通过判断同一个IP在短时间内是否频繁地访问一个网站

(3)通过动态页面增加爬虫的难度,达到反爬虫的目的

第一中反爬虫机制可以通过设置好用户的Headers信息还实现浏览器的伪装,第二种反爬虫的网站可以通过使用代理服务器并经常切换代理服务器的方式解决,第三种可以通过一些工具软件实现,这里我们主要介绍第一种

二.头信息的常见字段

但网络通过浏览器访问网站时,会向服务器发送一些Headers头信息,然后服务器根据用户的请求头信息生成一个网页内容,病将其返回给浏览器,所以服务器接受到这些头信息后可以根据头信息分析出该访问是不是爬虫

以下是Headers信息中常见的字段:

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

Accept 字段主要表示浏览器能够支持的内容类型有哪些text/html 表示HTML文档application/xhtml+xml 表示XHTML文档application/xml 表示XML文档q 代表权重系数,指介于0~9之间

所以这一行字段信息表示浏览器可以支持text/html ,applictaion/xhtml+xml ,applictaion/xml ,*/*等内容类型,支持的优先顺序从左到右

2.Accept-Encoding:gzip,deflate

Accept-Encoding 终端主要表示浏览器支持的压缩编码gzip 压缩编码的一种deflate 一种数据无损压缩算法

这一字段表示浏览器支持的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 (Windows NT 6.1;WOW64;rv:47.0) Gecko/0101 Firefox/47.0

User-Agent 表示用户代理,服务器可以通过该字段识别浏览器类型和版本号,客户端的操作系统和版本号以及网页排版引擎等客户信息,所以美女浏览器访问主要是模拟该字段Mozilla/5.0 表示浏览器名称及版本信息Windows NT 6.1;WOW64;rv:47.0 表示客户端操作系统对于信息Gecko 表示网页排版引擎对于的信息firefox 表示火狐浏览器

5.Connection:keep-alive

Connection 表示客户端与服务器的连接类型,对应的字段主要有两种:keep-alive,closekeep-alive 表示持久性连接close 表示单方面改变连接,让连接断开

6.Host:

Host 表示请求服务器的网站

7.Referer:网址

Referer 字段表示来源网网址地址,就是但我们打开一个网站的子网页时,源网网址地址是第一个网页地址

三.爬虫浏览器伪装实战

伪装成浏览器,首先我们要设置好对应的Headers信息,我们可以通过opener.addheaders为爬虫添加头部信息

import urllib.requestimport http.cookiejarurl=""headers={"Accept":"text/html,application/xhtml+xml,app;ication/xml;q=0.9,*/*;q=0.8","Accept-Encoding":"gb2312,utf-8","Accept-Language":"zh_CN,zh;q=0.8,en-US;q=0.5,en;q=0.3","User-Agent":"Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWeb Kit/537.36 (KHTML,like GEcko) Chrome/38.0.2125.1222 Safari/537.36 SE 2X MetaSr 10","Connection":"keep-a;ive","referer":""}cjar=http.cookiejar.CookieJar()opener=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cjar))headall=[]for key,value in headers.items():item=(key,value)headall.append(item)opener.addheaders=headallurllib.request.install_opener(opener)data=urllib.request.urlopen(url).read()fhandle=open("test.html","wb")fhandle.write(data)fhandle.close()

结果:下载了百度的网页,但伪装的头部信息里是widow操作系统但比如的是kali,所以伪装浏览器成功,但也可能是该网页没有拦截机制

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。