php禁止网页抓取(网站反爬虫的原因常见手段设置站点配置文件)
优采云 发布时间: 2022-02-17 01:15php禁止网页抓取(网站反爬虫的原因常见手段设置站点配置文件)
一、概述网站反爬虫原因
常见的反爬虫方法
1. 根据 IP 访问频率阻止 IP
2. 设置账号登录时间,账号访问过多会被封禁
设置账号登录限制,只有登录才能显示内容
设置账号登录时长,超过时间自动退出
3. 弹出数字验证码和图片确认验证码
爬虫访问次数过多,弹出验证码要求输入
4. API 接口限制
限制登录账户每天调用后端API接口的次数
加密后台api返回的信息
二、nginx反爬设置站点配置文件
因为user-agent标记了Bytespider爬虫,这样可以通过Nginx规则限制流氓爬虫的访问,直接返回403错误。
修改对应的站点配置文件(注意是在服务器中)
添加红色部分
server {
listen 80 default_server;
listen [::]:80 default_server;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
#forbidden Scrapy if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
return 403;
}
#forbidden UA
if ($http_user_agent ~ "Bytespider|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|python-requests|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" ) {
return 403;
}
#forbidden not GET|HEAD|POST method access
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403; }
}
附录:UA 集合
FeedDemon 内容采集
BOT/0.1 (BOT for JCE) sql注入
CrawlDaddy sql注入
Java 内容采集
Jullo 内容采集
Feedly 内容采集
UniversalFeedParser 内容采集
ApacheBench cc攻击器
Swiftbot 无用爬虫
YandexBot 无用爬虫
AhrefsBot 无用爬虫
YisouSpider 无用爬虫(已被UC神马搜索收购,此蜘蛛可以放开!)
jikeSpider 无用爬虫
MJ12bot 无用爬虫
ZmEu phpmyadmin 漏洞扫描
WinHttp 采集cc攻击
EasouSpider 无用爬虫
HttpClient tcp攻击
Microsoft URL Control 扫描
YYSpider 无用爬虫
jaunty wordpress爆破扫描器
oBot 无用爬虫
Python-urllib 内容采集
Python-requests 内容采集
Indy Library 扫描
FlightDeckReports Bot 无用爬虫
Linguee Bot 无用爬虫
使用python验证
查看代码
蟒蛇验证
使用请求模块
import requests
# 最基本的不带参数的get请求
r = requests.get('http://192.168.28.229')
print(r.content)
使用 urllib 模块
import urllib.request
response = urllib.request.urlopen('http://192.168.28.229/')
print(response.read().decode('utf-8'))
返回 403 表示它有效。
b'\r\n403 Forbidden\r\n\r\n403 Forbidden\r\nnginx\r\n\r\n\r\n'
三、站点范围的保护设置图
第一层 robots.txt
Robots 是 网站 和爬虫之间的协议。它告诉相应的爬虫简单直接的txt格式文本所允许的权限。也就是说,robots.txt是要在搜索引擎访问网站时查看的。的第一个文件。
注意:只规定协议,是否允许爬取数据收录,不影响网页访问。
注意:对于手动爬虫技术人员,一般直接忽略。
如果所有爬虫都不允许访问,内容如下:
User-agent: *
Disallow: /
第二层useragent特征拦截
因为user-agent标记了Bytespider爬虫,这样可以通过Nginx规则限制流氓爬虫的访问,直接返回403错误。
具体操作请看上面的nginx配置。
注意:这可以阻止一些爬虫访问,以及初级爬虫。
第三层JS发送鼠标点击事件
有的网站,可以从浏览器打开正常页面,但是requests中会要求输入验证码或者重定向到其他页面。
原理:点击登录时触发js加密代码,复杂加密算法参数+时间戳+sig值,后台限制参数+时间。验证成功后,即可登录。
备注:爬虫高手需要模拟浏览器行为、加载js代码和图片识别才能正常登录。
第 4 层后台接口限制
1. 根据IP访问频率封锁IP(注意:频率一定要控制好,否则容易误伤。)
2. 设置账号登录时间,账号访问过多被封禁。
设置帐户的登录限制。只有登录后才能显示内容。设置账号登录时长,时间到自动退出。
3.弹出数字验证码和图片确认验证码
爬虫访问次数过多,前端弹出验证码要求输入
4.API 接口限制
每天登录账号,请求后端api接口时,调用次数是有限的。加密后台api返回的信息
通过这4层设置,可以有效保护数据安全。
本文参考链接:
:///tulintao/p/11616640.html