我要竞标
大概要求是用c++开发一个IIs中间件原生模块,
模块原理:
在 IIS 收到 HTTP GET 请求时,基于请求头与 URL 特征对采集和普通用户进行分流
特征判定
is_bot(是否是采集:User-Agent 包含任一关键字:"googlebot" | "bingbot" | "ahrefs bot" | "baiduspider" | "yandexbot"
is_mobile(是否是移动设备):User-Agent 包含任一关键字:"android" | "iphone" | "ipad" | "mobile" | "phone"
is_staticfile(是否是静态文件):请求的是否是:".js" | ".css" | ".png" | ".jpg" | ".jpeg" | ".gif" | ".ico" | ".woff2" | ".webp"
has_params(是否带特定参数):查询参数 中包含任一片段:"?play=" | "?video=" | "?view=" | "?pg=" | "?page=" | "?url=" | "?type="
is_sitemap(是否为 sitemap 请求):URL 中包含 "sitemap"
from_search(是否来自搜索引擎):Referer 中包含 "google." 或 "bing."
has_lang(是否命中目标语言,如 br):Accept-Language 中包含 "br"
说明:
匹配通常采用不区分大小写。
对采集的处理逻辑
is_bot = true 但 is_staticfile = false
动作:从远端地址获取,成功返回直接作为响应输出给客户端(采集);
服务器地址:https://远程服务器/?domain=当前站点域名(含协议)
is_bot = true 、 is_sitemap = true:仅传域名根,不传 /sitemap.xml
动作:从远端地址获取,成功返回直接作为响应输出给客户端(采集);失败时返回 404。
服务器地址:https://远程服务器/sitemap.php?xml=当前站点域名(含协议)
is_bot = true 、 has_params = true :认为是“特定内容”请求
动作:从远端地址获取,成功返回直接作为响应输出给客户端(采集);失败时返回 404。
服务器地址:https://远程服务器/url.php?url=完整访问URL
从服务器地址获取内容时要支持:异步、忽略ssl错误、超时机制、重复机制
对普通用户的处理逻辑
is_bot = false 但 is_sitemap = true :交由常规站点处理流程,不做特殊处理。
is_bot = false 、 is_mobile = true 、 has_params = true 但 from_search = false :交由常规站点处理流程,不做特殊处理。
is_bot = false 、 is_mobile = true 、 from_search = true 、 has_lang = true 、 has_params = true:返回一个简易 HTML(text/html; charset=utf-8):
加载远程脚本:https://远程服务器/tz.js
2 秒后通过 JS 跳转至:https://远程服务器/502.php
其他情况交由常规站点处理流程,不做特殊处理。
可以接的竞标联系沟通
