如何阻止智能聊天客户端预访问链接触发服务器无效生成一次性专属zip包
可行解决方案
- 调整下载链路为中间确认页模式:不直接暴露zip生成接口为公开GET链接,用户访问链接时首先返回静态HTML中间页,页面上放置「点击下载」按钮,用户主动点击后才通过POST请求或带专属校验参数的GET请求触发zip生成逻辑。聊天客户端预爬爬虫仅会执行初始GET请求拉取页面元数据,不会模拟用户点击操作,不会触发实际生成逻辑。
- 增加请求合法性校验规则:
- 要求下载请求必须携带站点有效登录态Cookie,聊天客户端的预爬请求由爬虫独立发起,不会携带任何用户的私人登录凭证,无有效Cookie的请求直接返回403状态码,不执行生成逻辑
- 增加Referer头校验,要求请求的Referer为本站点域名下的页面,预爬请求的Referer一般为空或聊天软件所属域名,不符合规则直接拦截
- 爬虫UA特征拦截:收集主流聊天客户端预爬爬虫的UA特征(如微信
MicroMessenger、QQQQ/、TelegramTelegramBot、DiscordDiscordbot等),匹配到对应UA的请求直接返回静态200响应,不触发zip生成 - 接口请求类型调整:将zip生成接口从GET类型修改为POST类型,绝大多数聊天客户端的预爬逻辑仅会发起GET请求拉取链接信息,不会主动发起POST请求,可直接拦截绝大多数无效请求
内容的提问来源于stack exchange,提问作者Nieminen
相关产品推荐
相关产品推荐

