Varnish 缓存与 PHP 验证码用于反站点抓取算法
我有 Varnish 缓存与 PHP Captcha 一起使用,但我没有
了解如何设置触发限制。
在每小时(或每分钟)的请求数量限制之后
验证码输入已发送。
我可以正常工作,但想了解如何更改请求/秒限制。
以下是代码:
http://drcarter。 info/2010/04/how-fighting-against-scraping-using-varnish-vcl-inline-c-memcached/
这段代码对我说了什么?
if (rc == MEMCACHED_SUCCESS) {
uint64_t intval;
rc= memcached_increment(memc, key, strlen(key), (uint64_t)1, &intval);
if (rc != MEMCACHED_SUCCESS)
rc= memcached_set(memc, key, strlen(key), "1", 1, (time_t)60, (uint32_t)0);
else
if (intval>30) {
VRT_SetHdr(sp, HDR_REQ, "\013X-Scraping:", "1", vrt_magic_string_end);
syslog(LOG_INFO, "Scraping detected from %s",VRT_IP_string(sp, VRT_r_client_ip(sp)));
if (intval<300)
rc= memcached_set(memc, key, strlen(key), "500", 3, (time_t)3600, (uint32_t)0);
}
我们将非常感谢您的建议。
谢谢!
I've got Varnish cache working with PHP Captcha but I don't
understand yet how I can set the trigger limits.
After the limit of so many requests per hour (or minute)
the captcha input is sent.
I have it working but would like to be understand how I can alter the req/s limit.
Here is the code from:
http://drcarter.info/2010/04/how-fighting-against-scraping-using-varnish-vcl-inline-c-memcached/
What is this code saying to me?
if (rc == MEMCACHED_SUCCESS) {
uint64_t intval;
rc= memcached_increment(memc, key, strlen(key), (uint64_t)1, &intval);
if (rc != MEMCACHED_SUCCESS)
rc= memcached_set(memc, key, strlen(key), "1", 1, (time_t)60, (uint32_t)0);
else
if (intval>30) {
VRT_SetHdr(sp, HDR_REQ, "\013X-Scraping:", "1", vrt_magic_string_end);
syslog(LOG_INFO, "Scraping detected from %s",VRT_IP_string(sp, VRT_r_client_ip(sp)));
if (intval<300)
rc= memcached_set(memc, key, strlen(key), "500", 3, (time_t)3600, (uint32_t)0);
}
Your advise would be greatly appreciated.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请原谅我没有评论我的代码:)
所以通过评论,我想你会理解的。
excuse me to have not commenting my code :)
So with the comment, I think you will understand.
该代码按照以下流程工作:
因此,如果您想更改 res/s,您可以在 > 上播放; 30 测试或将密钥有效期更改为 60 以外的其他值。
The code works with this flow:
so if you want to alter res/s you can play on either the > 30 test or changing the key expiry to something else than 60.