And nope, failed again, US VPN.
Tried to post but got capture checked every time and lost the post every time.
Had to disable to VPN to post it, and this.
When this happens, please use a service like
https://whatismyipaddress.com/ so I can dig into the logs. Without the IP I cant investigate.
For anyone that might wonder why this is taking a fair amount tweaking to get this right, I figure it might be worth filling in some details.
There are only a few usual answers to solve the issue we have been having here.
- Use a service like CloudFlare's proxy (not an option here as mentioned prior)
- Use a turnkey WAF solution (very expensive)
- Use a self-hosted WAF solution (cheap, but additional management load)
Obviously we went with #3. The issue is we needed some features that are not available out of the box. For instance, the library used to do the checking in nginx doesn't support a clustered configuration with multiple ingress servers which is why people were getting spammed with captcha prompts.
Another issue we ran into was some VPNs and services like Apple's proxy seem to rotate the IP the user comes from and the original code didn't account for that, it only logged if an IP had passed the captcha. The instant the user's IP changed it would do the human verification again.
This took several days of development time to learn what was going on, and develop and deploy a workable solution (which is here if anyone is interested:
https://github.com/gnif/lua-cs-bouncer).
The solutions were two fold:
- Add memcached support to the library
- Make cookie verification token based instead of IP based (for those that care, the cookie is called `eevblog_cs`)
Obviously this code is new and fairly untested so I am still working through the bugs to stabilise it.