php禁止网页抓取(网站反爬虫的原因常见手段设置站点配置文件 )

优采云 发布时间: 2021-11-20 00:12

  php禁止网页抓取(网站反爬虫的原因常见手段设置站点配置文件

)

  一、概述网站反爬虫常见反爬虫手段的原因

  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发送鼠标点击事件

  对于某些网站,您可以从浏览器打开一个普通页面,但请求中会要求您输入验证码或重定向到其他页面。原理:点击登录时触发js加密码,复杂加密算法参数+时间戳+sig值,参数+时限在后台执行。验证成功后即可登录。

  备注:爬虫高手需要模拟浏览器的行为,加载js代码和图片识别,才能正常登录。

  第四层后台界面限制

  1. 根据IP访问频率屏蔽IP(注意:频率一定要控制好,否则容易误伤。) 2. 设置帐号登录时间,帐号访问被屏蔽太多。设置账号登录限制,只有登录才能显示内容。设置账号登录时长,时间一到自动退出。@4.API 接口的限制。日常登录账号,在请求后端api接口时,限制调用次数。对后台api返回的信息进行加密

  通过这4层设置,可以有效保护数据安全。

  本文参考链接:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线