1.当用户在浏览器地址栏输入URL并按回车键时,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为“获取”和“发布”两种方法。
2.当我们输入网址htp://www百度。com在浏览器中,浏览器发送Request请求获取HTP/www Baidu.com的html文件,服务器将Response文件对象发回浏览器。
3.浏览器分析响应中的HTML,发现它引用了很多其他文件,比如Images文件、CSS文件、JS文件。浏览器会自动再次发送一个获取图片、CSS文件或JS文件的请求。
4.当所有文件下载成功后,网页将完全按照HTML语法结构显示。
#url解释:
URL是统一资源定位符的缩写,统一资源定位符。
网址由以下部分组成:
scheme://host:port/path/>query-string = XXX # ancho
方案:表示访问的协议,如http或https、ftp等。
主机:主机名、域名,如www.baidu.com。
端口:端口号。当您访问网站时,浏览器默认使用端口80。
路径:找到路径。例如,在www.jianshu.com/trending/now,,以下趋势/现在是路径。
查询字符串:查询字符串,如www.baidu.com/s?. Wd=python,后跟Wd = python,是搜索字符串。
锚点:锚点,背景一般忽略,前端用于页面定位。
浏览器中的一个ufl,浏览器将对这个url进行编码。除了英文字母、数字和一些符号之外,所有其他符号都用百分号加上十六进制代码值进行编码。
#请求头通用参数:
在http协议中,当向服务器发送请求时,数据被分成三部分。第一个是把数据放在url中,第二个是把数据放在正文中(在post请求中),第三个是把数据放在头部。这里,我们介绍一些经常在网络爬虫中使用的请求头参数:
用户代理:浏览器名称。这通常用于网络爬虫。当请求网页时,服务器可以通过这个参数知道哪个浏览器发送了请求。如果我们通过爬虫发送请求,那么我们的用户代理就是Python。对于那些有反爬虫机制的网站,很容易判断你的请求是爬虫。因此,我们应该始终将此值设置为某些浏览器的值,以伪装我们的爬虫。
引用者:指示当前请求来自哪个网址。这也可以作为反爬虫技术。如果不是来自指定页面,则不会做出相关响应。
http协议是无状态的。也就是说,同一个人发送了两个请求,服务器无法知道这两个请求是否来自同一个人。因此,此时使用cookie进行标识。一般来说,如果你想成为一个登录后才能访问的网站,你需要发送cookie信息。
常见的请求方法有:
在Http协议中,定义了八种请求方法。这里介绍两种常见的请求方法,即get请求和post请求。
Get request:一般来说,get request只在从服务器获取数据时使用,不会对服务器资源产生任何影响。
发布请求:发送数据(登录)、上传文件等。,并在会影响服务器资源时使用post请求。
这是网站开发中常用的两种方法。并且一般会遵循使用原则。然而,为了成为一个反爬虫机制,一些网站和服务器经常出于常识玩牌。应该使用get方法的请求可能必须更改为post请求,这取决于具体情况。
常见响应状态代码:
00:请求正常,服务器正常最近数据。
31:永久重定向。例如,当您访问www.jingdong.com时,您将被重定向到www.jd.com。
32:临时重定向。例如,当访问需要登录的页面时,此时没有登录,您将被重定向到登录页面。
400:在服务器上找不到请求的网址。换句话说,盾请求ur1错误。
403:服务器拒绝访问,权限不足。
50:服务器内部错误。可能是服务器有bug。
有的时候,当我们的爬虫程序完成了,并且在本地测试也没有问题,爬取了一段时间之后突然就发现报错无法抓取页面内容了。这个时候,我们很有可能是遇到了网站的反爬虫拦截。
我们知道,网站一方面想要爬虫爬取网站,比如让搜索引擎爬虫去爬取网站的内容,来增加网站的搜索排名。另一方面,由于网站的服务器资源有限,过多的非真实的用户对网站的大量访问,会增加运营成本和服务器负担。
这是一种最基本的反爬虫方式,网站运营者通过验证爬虫的请求头的 User-agent,accep-enconding 等信息来验证请求的发出宿主是不是真实的用户常用浏览器或者一些特定的请求头信息。
通过 Ajax,或 者javascript 来动态获取和加载数据,加大爬虫直接获取数据的难度。
这个相信大多数读者非常熟悉了吧,当我们输错多次密码的时候,很多平台都会d出各种二维码让我们识别,或者抢火车票的时候,会出现各种复杂的验证码,验证码是反爬虫措施中,运用最广,同时也是最有效直接的方式来阻止爬虫的措施之一。
在识别到某些异常的访问的时候,网站运营者会设置一个黑名单,把一些判定为爬虫的IP进行限制或者封杀。
有些网站,没有游客模式,只有通过注册后才可以登录看到内容,这个就是典型的使用账号限制网站,一般可以用在网站用户量不多,数据安全要求严格的网站中。
我们可以在请求头中替换我们的请求媒介,让网站误认为是我们是通过移动端的访问,运行下面的代码后,当我们打开 hupu.html,我们会发现返回的是移动端的虎扑的页面而不是网页端的。
比如,我们可以设置一个随机的间隔时间,来模拟用户的行为,减少访问的次数和频率。 我们可以在我们爬虫的程序中,加入如下的代码,让爬虫休息3秒左右,再进行爬取,可以有效地避开网站的对爬虫的检测和识别。
代理就是通过访问第三方的机器,然后通过第三方机器的 IP 进行访问,来隐藏自己的真实IP地址。
由于第三方代理良莠不齐,而且不稳定,经常出现断线的情况,爬取速度也会慢许多,如果对爬虫质量有严格要求的话,不建议使用此种方法进行爬取。
可以通过动态的 IP 拨号服务器来变换 IP,也可以通过 Tor 代理服务器来变换 IP。
反反爬虫的策略,一直是在变换的,我们应该具体问题具体分析,通过不断的试错来完善我们的爬虫爬取,千万不要以为,爬虫程序在本机调试之后,没有问题,就可以高枕无忧了。线上的问题,总是千变万化,我们需要根据我们的具体反爬措施,来针对的写一些反反爬虫的代码,这样才能保证线上环境的万无一失。
1、网站建设好了,当然是希望网页被搜索引擎收录的越多越好,但有时候我们也会碰到网站不需要被搜索引擎收录的情况。要启用一个新的域名做镜像网站,主要用于PPC 的推广,这个时候就要想办法屏蔽搜索引擎蜘蛛抓取和索引我们镜像网站的所有网页。因为如果镜像网站也被搜索引擎收录的话,很有可能会影响官网在搜索引擎的权重。
2、屏蔽主流搜索引擎爬虫(蜘蛛)抓取/索引/收录网页的几种思路。是整站屏蔽,而且是尽可能的屏蔽掉所有主流搜索引擎的爬虫。
3、通过 robots.txt 文件屏蔽,可以说 robots.txt 文件是最重要的一种渠道(能和搜索引擎建立直接对话)。通过 meta tag 屏蔽,在所有的网页头部文件添加,添加如下语句:<meta name="robots" content="noindex, nofollow">。通过服务器(如:Linux/nginx )配置文件设置,直接过滤 spider/robots 的IP 段。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)