+
95
-

回答

cf的5秒盾就是当我们第一次访问使用 CloudFlare 加速的网站时,网站就会出现让我们等待 5 秒种的提示。

800_auto

这个主要是防止cc攻击了,有效抵御了通过爬虫软件对网站的爬取,但是现在出现了cfscrape可以绕开cf的5秒盾了。

使用pip install cfscrape安装cloudflare-scrape,同时确认本地是否安装node.js开发环境,如果没有,需要安装配置nodejs开发环境。

使用实例
处理 get 请求的 CloudFlare

import cfscrape
# 实例化一个create_scraper对象
scraper = cfscrape.create_scraper()
# 请求报错,可以加上时延
# scraper = cfscrape.create_scraper(delay = 10)
# 获取网页源代码
web_data = scraper.get("https://example.com/").content
print(web_data)
处理 post 请求的 CloudFlare

# import cfscrape
# 实例化一个create_scraper对象
scraper = cfscrape.create_scraper()
# 获取真实网页源代码
web_data = scraper.post("http://example.com").content
print(web_data)

httpguard是一款由OpenResty实现防CC攻击的高性能CDN系统,有免费版本与商业版本。


800_auto

github地址:https://github.com/centos-bz/HttpGuard

HttpGuard也是基于lua的,所以还是要安装lua,如果没有安装的可以安装这里的来:linux nginx服务器安装verynginx防止CC攻击

一、下载HttpGuard免费版本

创建文件夹

mkdir HttpGuard

cd HttpGuard

下载解压

wget https://www.zhujitop.com/test/x/master.zip

unzip master.zip

转移文件夹

cp -r HttpGuard-master/ /usr/local/nginx/HttpGuard

是为了把HttpGuard放到nginx文件夹里面去

配置文件

在nginx.conf文件http区域内增加

lua_package_path "/usr/local/nginx/HttpGuard/?.lua";
lua_shared_dict guard_dict 100m;
lua_shared_dict dict_captcha 70m;
init_by_lua_file '/usr/local/nginx/HttpGuard/init.lua';
access_by_lua_file '/usr/local/nginx/HttpGuard/runtime.lua';
lua_max_running_timers 1;

修改HttpGuard配置文件

打开 /usr/local/nginx/HttpGuard/config.lua

把basedir后面的路径修改了

这里也可以顺便修改下验证配置:

limitReqModules这句,图2中,代表10秒内超过10次刷新,访问,就出现验证码。

安装验证码(好像可以不安装)

cd /usr/local/nginx/HttpGuard/captcha/

/usr/local/php/bin/php getImg.php

这个是用linux命令操作的,然后重启下nginx

测试,动态页面才有效,不是动态的,测试的时候,静态页面无所谓CC攻击。

比较:

httpguard的防cc攻击方式更有效、更灵活,需要手动输入验证码,cf的5秒盾完全无需用户操作,等待5秒即可,比较方便,但是容易被破解。

网友回复

我知道答案,我要回答