微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 deflector.map 中匹配部分代理字符串

如何解决如何在 deflector.map 中匹配部分代理字符串

一年多以来,我一直在寻找一篇关于 Apache 偏转器地图的好文章,但没有取得任何成功。希望这里有人能指出我正确的方向。我找到了类似的链接 https://httpd.apache.org/docs/2.4/rewrite/access.html#referer-deflector 但他们实际上并没有解释发生了什么。

我有一个 deflectors.conf 文件,其中包含以下条目:

RewriteMap  bad-agent "txt:/path/to/deflector_maps/agent.map"
RewriteCond "%{HTTP_USER_AGENT}" !=""
RewriteCond "${bad-agent:%{HTTP_USER_AGENT}}" "=-"
RewriteRule "^" "${bad-agent:%{HTTP_REFERER}}" [R=301,L]

以上将阻止 agent.map 文件中列出的代理。我猜它会比较完整的代理字符串以获得地图文件中的完全匹配 - 对吗?或者是否可以在映射文件中输入部分代理字符串并使其工作?

示例:假设我将以下行添加到 agent.map:

SEOlizer -

如果在代理字符串中的任何位置找到“SEOolizer”,我希望阻止此访问者。

我假设 RewriteRule 中的“^”告诉它从头开始比较整个字符串?如果这是真的,我该如何编写它来抓取地图文件中的一行并将其匹配到代理字符串中的任何位置?


另外,如果有人能解释上面代码的每一行是做什么的,那将是一个很大的帮助。前两行似乎不言自明,但我对其他两行有点模糊。

RewriteMap  bad-agent "txt:/path/to/deflector_maps/agent.map"

此行为要在后续行中使用的地图提供了一个别名(“bad-agent”),并声明了地图的路径。

RewriteCond "%{HTTP_USER_AGENT}" !=""

这一行确保在处理请求之前代理不为空。

RewriteCond "${bad-agent:%{HTTP_USER_AGENT}}" "=-"

这个我不确定。 “=-”有什么作用?它似乎在寻找破折号作为第二个参数(?)但如果我不使用破折号怎么办。如果改为输入域怎么办?

RewriteRule "^" "${bad-agent:%{HTTP_REFERER}}" [R=301,L]

我知道这一行发送了 301 错误,但我不知道它是如何将地图条目与代理字符串进行比较的。

也许如果我确切地理解每一行的作用,我就能弄清楚这一点。

谢谢,
弗兰克

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。