一步步编写自己的PHP爬取代理IP项目(一)
2018-09-14 14:53
387 查看
第一章节主要给大家普及一下爬虫的概念以及相关的知识,让大家对后面的学习打下扎实的基础。如果你是有经验的开发者,完全可以跳过第一章进入第二章的学习了。
这个项目主要围绕两大核心点展开:
1. PHP爬虫
2. 代理IP
咱们先讲讲什么是爬虫,简单来讲,爬虫就是一个探测机器,它的基本操作就是模拟人的行为去各个网站溜达,点点按钮,查查数据,或者把看到的信息背回来。就像一只虫子在一幢楼里不知疲倦地爬来爬去。
而我们最常见,用的最多的爬虫就是:百度。
百度就是利用这种爬虫技术:每天放出无数爬虫到各个网站,把他们的信息抓回来,等着你去搜索。
还有各种类型的抢票软件,每一个爬虫都帮助你不断刷新 12306 网站的火车余票。一旦发现有票,就马上买下来。
随着时代的发展,人们发现并不是所有的爬虫都像百度、抢票软件这种帮助到我们的生活,也有许多非法入侵的爬虫,这些爬虫不仅帮助不到我们,甚至会让我们的许多信息泄露。
人们十分憎恨这种爬虫,于是这就诞生了另一门技术,反爬虫。
话说有一天,小明想去电影院看电影,但是不知道看哪一部电影好,于是他想从多个网站爬取一些影评来让自己更好的抉择看什么电影。于是小明写了标准的爬虫(基于HttpClient库),不断地遍历某站的电影下面的影评页面,根据 Html 分析电影名字存进自己的数据库。
但是电影网站的工作人员小红却不乐意了,你用爬虫把我们的影评爬走了,那谁还上我们网站啊,我们怎么卖广告盈利啊。小红发现某个时间段请求量陡增,分析日志发现都是 IP(X.X.X.X)这个用户,并且 useragent 还是 JavaClient1.6 ,基于这两点判断非人类后直接在Nginx 服务器上封杀。
小明发现自己的影评只爬了三分之一就被封了,于是也针对性的变换了下策略,每爬半个小时就换一个IP代理。
于是这就涉及到我们项目的第二点,代理IP了。这个词对于一些刚入门的新手们也许有点陌生,其实代理IP我们也可以理解为是一台代理服务器。
代理服务器是介于浏览器和Web服务器之间的一台服务器,当你通过代理服务器上网浏览时,浏览器不是直接到Web服务器去取回网页,而是向代理服务器发出请求,由代理服务器来取回浏览器所需要的信息,并传送给你的浏览器
这样,电影网站的小红就无法识别哪个IP是我们,而我们也可以顺利获取到自己想要的影评啦。(不过实际中还有更多的方法进行爬虫的攻防,这里就不一一讲述了)。
这个项目主要围绕两大核心点展开:
1. PHP爬虫
2. 代理IP
咱们先讲讲什么是爬虫,简单来讲,爬虫就是一个探测机器,它的基本操作就是模拟人的行为去各个网站溜达,点点按钮,查查数据,或者把看到的信息背回来。就像一只虫子在一幢楼里不知疲倦地爬来爬去。
而我们最常见,用的最多的爬虫就是:百度。
百度就是利用这种爬虫技术:每天放出无数爬虫到各个网站,把他们的信息抓回来,等着你去搜索。
还有各种类型的抢票软件,每一个爬虫都帮助你不断刷新 12306 网站的火车余票。一旦发现有票,就马上买下来。
随着时代的发展,人们发现并不是所有的爬虫都像百度、抢票软件这种帮助到我们的生活,也有许多非法入侵的爬虫,这些爬虫不仅帮助不到我们,甚至会让我们的许多信息泄露。
人们十分憎恨这种爬虫,于是这就诞生了另一门技术,反爬虫。
话说有一天,小明想去电影院看电影,但是不知道看哪一部电影好,于是他想从多个网站爬取一些影评来让自己更好的抉择看什么电影。于是小明写了标准的爬虫(基于HttpClient库),不断地遍历某站的电影下面的影评页面,根据 Html 分析电影名字存进自己的数据库。
但是电影网站的工作人员小红却不乐意了,你用爬虫把我们的影评爬走了,那谁还上我们网站啊,我们怎么卖广告盈利啊。小红发现某个时间段请求量陡增,分析日志发现都是 IP(X.X.X.X)这个用户,并且 useragent 还是 JavaClient1.6 ,基于这两点判断非人类后直接在Nginx 服务器上封杀。
小明发现自己的影评只爬了三分之一就被封了,于是也针对性的变换了下策略,每爬半个小时就换一个IP代理。
于是这就涉及到我们项目的第二点,代理IP了。这个词对于一些刚入门的新手们也许有点陌生,其实代理IP我们也可以理解为是一台代理服务器。
代理服务器是介于浏览器和Web服务器之间的一台服务器,当你通过代理服务器上网浏览时,浏览器不是直接到Web服务器去取回网页,而是向代理服务器发出请求,由代理服务器来取回浏览器所需要的信息,并传送给你的浏览器
这样,电影网站的小红就无法识别哪个IP是我们,而我们也可以顺利获取到自己想要的影评啦。(不过实际中还有更多的方法进行爬虫的攻防,这里就不一一讲述了)。
相关文章推荐
- PHP: 手把手编写自己的 MVC 框架实例教程
- 续在自己电脑上安装linux虚拟机,并安装apache2+php5.6+mysql5环境安装好后把项目部署上去
- 简单ORM工具的设计和编写,自己项目中曾经用过的
- PHP中使用curl及代理IP模拟post提交【两种实用方法】
- java 反向代理的项目怎么获取访问者IP
- 编写自己的php扩展函数
- 自己编写的一些好用的jquery方法(部分方法仅适用于我的项目)
- 菜鸟PHP,自己曾经做过的php项目
- 手把手编写自己的PHP MVC框架实例教程
- 一步步在SAE 部署自己的python项目
- 编写自己的php扩展函数(c)
- 如何在自己的php项目中加一个插件功能
- PHP入门教程之手把手编写自己的PHP MVC框架
- 用 PHP 编写跨域访问代理
- gitlab经过nginx代理后,项目地址显示ip
- 编写php拓展实例--slime项目(用户登录会话类)
- 自己项目中PHP常用工具类大全分享
- Nginx反向代理导致PHP获取不到正确的HTTP_HOST,SERVER_NAME,客户端IP的解决方法
- 从零开始编写自己的C#框架(10)——项目实施计划与甘特图
- PHP在yii2中封装SuperSlide 幻灯片编写自己的SuperSlideWidget的例子