问答 / 0 / 18 / 创建于 2年前 / 更新于 2年前
网站如何通过PHP防采集?比如:防采套路:输入验证码框验证
通过什么判断是爬虫、搜索引擎、用户浏览?但不要影响搜索引擎,用户浏览。目的就是判断出爬虫就直接禁止访问或者封IP之类的操作。能有个参考案例最好了。
单IP访问频次,是频次,即在某一段时间内的访问次数。 根据频次来判断,除非对方开代理池,不然你是比较难判断的。
不是什么重要信息真不要弄这些弹出层。弹的越多越影响体验不说,真正能防爬虫少之又少。就是限制ip访问这些。或者需要登录,限制登录账号访问频次等。
目前没有100%防采集的办法,哈哈。
对于爬虫,各大搜索厂商都有公布自家 bot 所使用的 IP 段,把这些 IP 段加入白名单放过。其他的访问,未登录的就像阿里系那样,点两下就来个验证码 😄使用手机号或者微信验证注册,对于已登录的,就限制每秒请求数,加个限流,对于异常的用户直接封停账号。
1.内网服务器 2.关闭网站 :grin:
一般防不了,只能增加爬虫的开发和维护成本。
将爬虫的ip设为白名单
有时候被爬也是好事情,你可以在页面中插入外链,一般对方采集后,基本上都是建站的,当爬虫爬到他的网站时,还能给你带来流量/权重
拔网线得永生
可能完全不影响爬虫,想要完全不影响正常用户不可能的
我现在中间件校验,只针对需要保护的资源路由
先收集搜索引擎的IP,host命令确认之后,IP段放到白名单里,不做处理,基本上几天就能收集全了
不在白名单里的
先记录ip,ua,asn,以及header的referer,然后每天awk统计一下
laravel开configureRateLimiting,频繁访问的返回429,然后统计429的状态码,不正常的多加验证码
configureRateLimiting
之后收集数据先按照asn屏蔽,这个很好用,效果不错,直接把阿里云,腾讯云,amazon,ms,ovh,都屏蔽了
然后有些爬虫写的很随意,ua都不设置的,比如 android [2-6] ,os x 10_[0-9],Windows 98/CE/NT [1-4],直接屏蔽/跳验证码,还有请求头数量就45个的,肯定不正常,屏蔽,常见的ua,curl/wget/python也屏蔽
android [2-6] ,os x 10_[0-9],Windows 98/CE/NT [1-4]
在往后就是代理池的问题,有的代理池是不停拨号,ip总在一个范围内波动,这种屏蔽
还有一种代理池是肉鸡程序,用的家宽,分析日志判断爬虫和真实用户的大致比例,设定一个威胁值和危险期,危险期内用户每次访问威胁值增加,达到阈值就验证,用户通过就session给个安全期,安全期内不认证,通过的同时降低总的威胁值
最后说下验证码,你那个验证码没用的,免费的ocr就搞定了,推荐给你个验证码破解项目,你可以测试你的验证码,带带弟弟https://github.com/sml2h3/ddddocr
够细够全,赞同总结: 收集搜索引擎的IP,防采集做一些特别的手段
了解下 cf 就是干这事 勾选选项即可 什么火车 Python 都没办法
头里面加一些连七八糟的验证信息,发现验证信息不对或者没有直接404就行了,验证信息包括用户token,请求参数,请求类型,请求路径,请求时间,请求签名等,然后中间件进行验证 只是增加爬取成本,同样无法阻止
PHP可以通过以下几种方式来防止采集:
在判断是爬虫、搜索引擎、用户浏览时,可以通过检查HTTP请求头中的User-Agent字段来判断是否是爬虫、搜索引擎或用户浏览。
具体来说,可以使用如下的方法来判断:
此外,还可以通过检查请求的频率、请求的行为等因素,来进一步确定是否是爬虫、搜索引擎或用户浏览。
1111
不要局限于PHP技术。
个人认为从两方面来思考此类问题:一是技术层面,最简单的就是建立授权访问功能,提升一点则是爬虫行为鉴别;二是法律层面,这里可以引用《中华人民共和国数据安全法》:
第三十二条 任何组织、个人收集数据,应当采取合法、正当的方式,不得窃取或者以其他非法方式获取数据。 法律、行政法规对收集、使用数据的目的、范围有规定的,应当在法律、行政法规规定的目的和范围内收集、使用数据。
结合技术手段鉴别爬虫行为,定位爬虫来源,尽可能的收集证据;再结合注册用户必须提交真实信息进行实名认证。我相信执法机关会协助我们保护数据安全,惩处数据盗用行为。
我要举报该,理由是:
单IP访问频次,是频次,即在某一段时间内的访问次数。 根据频次来判断,除非对方开代理池,不然你是比较难判断的。
不是什么重要信息真不要弄这些弹出层。弹的越多越影响体验不说,真正能防爬虫少之又少。就是限制ip访问这些。或者需要登录,限制登录账号访问频次等。
目前没有100%防采集的办法,哈哈。
对于爬虫,各大搜索厂商都有公布自家 bot 所使用的 IP 段,把这些 IP 段加入白名单放过。
其他的访问,未登录的就像阿里系那样,点两下就来个验证码 😄
使用手机号或者微信验证注册,对于已登录的,就限制每秒请求数,加个限流,对于异常的用户直接封停账号。
1.内网服务器 2.关闭网站 :grin:
一般防不了,只能增加爬虫的开发和维护成本。
将爬虫的ip设为白名单
有时候被爬也是好事情,你可以在页面中插入外链,一般对方采集后,基本上都是建站的,当爬虫爬到他的网站时,还能给你带来流量/权重
拔网线得永生
可能完全不影响爬虫,想要完全不影响正常用户不可能的
我现在中间件校验,只针对需要保护的资源路由
先收集搜索引擎的IP,host命令确认之后,IP段放到白名单里,不做处理,基本上几天就能收集全了
不在白名单里的
先记录ip,ua,asn,以及header的referer,然后每天awk统计一下
laravel开
configureRateLimiting
,频繁访问的返回429,然后统计429的状态码,不正常的多加验证码之后收集数据先按照asn屏蔽,这个很好用,效果不错,直接把阿里云,腾讯云,amazon,ms,ovh,都屏蔽了
然后有些爬虫写的很随意,ua都不设置的,比如
android [2-6] ,os x 10_[0-9],Windows 98/CE/NT [1-4]
,直接屏蔽/跳验证码,还有请求头数量就45个的,肯定不正常,屏蔽,常见的ua,curl/wget/python也屏蔽在往后就是代理池的问题,有的代理池是不停拨号,ip总在一个范围内波动,这种屏蔽
还有一种代理池是肉鸡程序,用的家宽,分析日志判断爬虫和真实用户的大致比例,设定一个威胁值和危险期,危险期内用户每次访问威胁值增加,达到阈值就验证,用户通过就session给个安全期,安全期内不认证,通过的同时降低总的威胁值
最后说下验证码,你那个验证码没用的,免费的ocr就搞定了,推荐给你个验证码破解项目,你可以测试你的验证码,带带弟弟https://github.com/sml2h3/ddddocr
了解下 cf 就是干这事 勾选选项即可 什么火车 Python 都没办法
头里面加一些连七八糟的验证信息,发现验证信息不对或者没有直接404就行了,验证信息包括用户token,请求参数,请求类型,请求路径,请求时间,请求签名等,然后中间件进行验证 只是增加爬取成本,同样无法阻止
PHP可以通过以下几种方式来防止采集:
在判断是爬虫、搜索引擎、用户浏览时,可以通过检查HTTP请求头中的User-Agent字段来判断是否是爬虫、搜索引擎或用户浏览。
具体来说,可以使用如下的方法来判断:
此外,还可以通过检查请求的频率、请求的行为等因素,来进一步确定是否是爬虫、搜索引擎或用户浏览。
1111
不要局限于PHP技术。
个人认为从两方面来思考此类问题:一是技术层面,最简单的就是建立授权访问功能,提升一点则是爬虫行为鉴别;二是法律层面,这里可以引用《中华人民共和国数据安全法》:
结合技术手段鉴别爬虫行为,定位爬虫来源,尽可能的收集证据;再结合注册用户必须提交真实信息进行实名认证。我相信执法机关会协助我们保护数据安全,惩处数据盗用行为。