Crazy amount of guests

Interesting cost avoidance strategy.

From what i could tell, if you can get all your clients rolled into one account, you could split the cost of a plan with multiple clients, no?
Technically yes though you still have quota limits for WAF rules/rate limits at Enterprse plan level which must be shared with all sites that you extend SAAS feature for. On Enterpise plan WAF rules = 1000 rules and Advance rate limiting you get 100 rules, API JWT validation rules 100 rules, User Agent rules 1000 rules. For WAF rules for me I already using 225 rules!

Business plan isn't that generous, 100 WAF rules and 5 rate limiting rules.

Pro plan has 20 WAF rules and 2 rate limiting rules.
 
Oh yes I don't like paying for bots to use up my site resources. I developed my own plugin using Chatgpt and I have audit all the traffic each day and make recommendations for how we can limit the bots even further. It's working really good. I probably should replace I probably should release the plugin.
Yer... I just built my own heuristics system that analyses monthly logs and finds patterns over consecutive months, then provides recommendations and API into CF to adjust rules quickly at a click. This whole addon thing, its a nightmare. One is crashing memory and cpu, then having to adjust how it operates to partially operate without doing one or both of those things. Another just quickly costs more and more via API checking, and the more you use it, the more bots hit your site to keep you moving up the payment plan. Bots have a behavioural pattern, so without affecting day to day running of the site, I will find those patterns over months of data, the more data the better the analysis, and then deploy targeted rules to counter the problem, not random IP/ASN/Country blocking that is happening.
 
Yer... I just built my own heuristics system that analyses monthly logs and finds patterns over consecutive months, then provides recommendations and API into CF to adjust rules quickly at a click. This whole addon thing, its a nightmare. One is crashing memory and cpu, then having to adjust how it operates to partially operate without doing one or both of those things. Another just quickly costs more and more via API checking, and the more you use it, the more bots hit your site to keep you moving up the payment plan. Bots have a behavioural pattern, so without affecting day to day running of the site, I will find those patterns over months of data, the more data the better the analysis, and then deploy targeted rules to counter the problem, not random IP/ASN/Country blocking that is happening.

Hey, just curious / following up - have you tried out Bot Guard in light-db mode? e.g. the latest releases introduced this mode and made a bunch of optimisations also.
 
Hey, just curious / following up - have you tried out Bot Guard in light-db mode?
Sorry, not yet. I am dabbling in another direction right now... the below is just one months data. No overhead this way. I implemented heuristic analysis of monthly access logs, aiming for superior detection accuracy through pattern-based traffic analysis rather than static rule matching. Going down the session fingerprinting route to see where that takes me for a robust recommended ruleset.

Screenshot 2026-07-03 160346.webp
 
People in this thread said it can't be done. I didn't like that answer, so I did it. Now this still isn't enough data on 2 months of log files, but as I add them, data accuracy increases, making informed decisions easier, and then those decisions are semi-automated at that point, especially as more clusters become known. You couldn't do this with an addon, it would cripple most shared hosting servers, but a powerful desktop, makes light work of this stuff. This one example, then below you see many lines of clusters being formed from heuristic pattern analysis, exactly what big tech is doing with their fingerprinting... they've just been refining it with time, is the only difference. I will do the same for mine.

These IP's all started out as "likely human" individually, but when you start using heuristic pattern analysis, clusters form and residential proxy clusters become apparent, even when mixed with commercial servers, thus far easier handled. Again... I am going to wait for more data before I act, because I would like 3 to 4 months of logs before making decisions... and as a year of logs are ingested, that data becomes far more accurate.

Screenshot 2026-07-03 170448.webp

Screenshot 2026-07-03 171948.webp
 
Last edited:
These IP's all started out as "likely human" individually, but when you start using heuristic pattern analysis, clusters form and residential proxy clusters become apparent, even when mixed with commercial servers, thus far easier handled. Again... I am going to wait for more data before I act, because I would like 3 to 4 months of logs before making decisions... and as a year of logs are ingested, that data becomes far more accurate.
Nice. You might want to also sign up for a AbuseIPDB account too that has crowd sourced IP intelligence as well. I use it via custom CSF Firewall integration tool I developed at https://github.com/centminmod/centminmod-abuseipdb-reporter so CSF Firewall bad IPs get blocked at firewall level and also submitted to AbuseIPDB database. I now going to add it as 5th IP data intelligence provider for my Cloudflare aggregated analytics script just to see what it reports.

1783069659916.webp

example of active bad IP submissions from my servers CSF Firewall to AbuseIPDB

1783068512861.webp
 
Last edited:
Looks like XF Cloud has implemented something to help combat bots:

I have noticed lots of hits to https://your.domain/.stile/challenge?rung=nojs&band=watch&return=/thread/

Let's hope this solution works.

didn't make any changes to my CF but only noticed this redirect started happening since last night.

either CF fixed their stuff or XF Cloud added something, either way, thank you.

if you follow the link shows brief message and usually CF has their branding everywhere

View attachment 340743

Seems indeed that XF has something in the works regarding the bot problem, judging from the statement of @Chris D in this thread:

We are in the process of implementing measures to prevent this kind of issue and, despite being in testing for a number of weeks, some unexpected issues arose that were correctly reported to us by @MapleOne and have since been resolved.

As the product develops further, there may be occasional rough edges or issues arising while we tune the behaviours needed to keep our customer's forums running smoothly.

He says that they have been working on that for quite a while already:

I have personally been working, or at least on call, 24/7/365 for over 12-18 months constantly having to deal with the repercussions from the type of issues you see talked about here:

It seems to have been rolled out on XF Cloud (with some confusion and side effects on the customer side) - neither the feature nor the rollout nor the approach behind it nor the fact that they would be working on something has been announced and for the time being it is still completely unclear what it is and wether it is / will be limited to XF Cloud or if it will be available to self-hosted customers as well. Possibly it might even be a part of the mysterious 2.4 release and aught to be announced through a HYS some time in future - however, what could have been resulted in a huge wave of "yeays" has instead now become another XF communication disaster with frustrated and annoyed customers and another locked thread as a consequence.

@Chris D reacted pretty annoyed on my kudos that they would finally do something about the bot issue and the statement

Until now the collective perception was XF would completely ignore the issue, despite it is the thing that seems the most important and dominating topic for basically all forum owners now.

stating:

“Finally”? Read what I said again. Do you think we’ve not been doing anything about it to this point? We’ve been fighting this problem daily for over a year. It’s been my full time job on top of my full time job.

Well, given that just two weeks ago this site suffered from close to 200.000 "guests" in parallel (which finally influenced the performance of the forum) until actions took place in form of CF "under attack mode" and until then tens of thousands of guest had become the normal for many months on here while customers opened countless threads regarding the guest/bot problems on their forums since summer last year w/o any reaction, hints or help from XF the only obvious conclusion was that they would completely ignore the topic.

This very thread we are writing in here was started by a XF Cloud customer suffering from bot waves back in October 2025 - w/o reaction from XF's side - and I had started a thread regarding unwanted traffic already back in April last year (more than a year ago), not being the first or only one, there had been quite a bunch, i.e.:

Bildschirm­foto 2026-07-03 um 13.01.55.webp

In the meantime this thread here has grown to 46 pages of postings, countless forum owners suffer from the issue, many have spent countless hours digging for solutions, investing time and money to create their individual setups and ways out of the misery, while XF stayed completely silent.

And @Chris D is honestly wondering why people got to the impression that XF would ignore the issue?

However, while being very late to the party if they do have something to offer that works it will be very welcome. (y) If it works has to be seen - whatever it is seems probably to have been rolled out here as well as on XF cloud, yet the guest numbers on here are still in the thousands:

this morning:
Bildschirm­foto 2026-07-03 um 13.10.16.webp

right now:
Bildschirm­foto 2026-07-03 um 13.09.56.webp

However: Clearly better than the tens of thousands or hundreds of thousands we used to see on here. If the solution would be available for self hosted customers as well it would be even better - would love it. Many month ago I wrote somewhere on this forum that it would push XF massively in front of the competition and give them a huge USP if they would deliver a solution to the bot problem. Maybe they will, we'll see.

Yet still it is worth noting that they have been outperformed by miles by add-on devs like @Osman with his IP Threat Manager or @zeeb0t with Bot Guard who delivered working solutions fast and reacted to the needs of forum owners in a timely manner - fast and adequate. I would have hoped that the XF crew would have shared that they work on the issue or hint at best practices that go further than "use Cloudflare" - but no. They seem to have decided not to participate in their own forum any more as they are annoyed by their customers while those are annoyed by the XF crew and their non-communication and non-delivery.

However: I am looking forward to what XF's contribution to the bot topic will look like and what it will contain.
 
I am looking forward to what XF's contribution to the bot topic will look like and what it will contain.
Honestly, I hope they don't. Why aren't you expecting Linux distros to solve the issue? ISP's? There are far better people to solve such issues than end of the line software developers. This is the equivalent of asking every CMS, website stack, forum, etc, to solve the internet bad bot behaviour problem. Back to add-ons, this is what the developer market is for, for devs to build plugins for users to solve problems outside the scope of the base software. Third party DNS exists to meet this market.

It is ridiculous to expect Xenforo to solve an internet bad bot behaviour problem.
 
This is my, probably one and only, contribution to the bot topic. The solution for different customers, different service providers and different websites will be, by its very nature, different.

From a software perspective, sure, we will continue to do all we can in terms of ongoing optimisation efforts and improvements, but at its core it's not really a software problem. If the traffic reaches any application that is database driven (be that XenForo or anything else, Wordpress, vBulletin, any CMS) it is often too late to do anything. The solution, as server administrators, is to stop the traffic even getting to your expensive hot paths, shedding it before it even touches PHP or, even better, shedding it at the Edge, which is why solutions such as Cloudflare exist which, by the way, is primarily all we've done on this very forum to benefit from the reduction in guest numbers you have observed. There are other tools too, such as Anubis. Frankly if you're expecting a database driven PHP software to solve this problem for you, you will remain to be disappointed, even if some of the solutions in theory are currently helping.

This is not a problem we can solve for self-hosted customers in the software itself. But as operators of servers for XenForo Cloud customers, we can try to solve these issues because that's what those customers rightly expect and we have full control over managing their servers and we can do the things we're unable to if someone is self-hosting their forum on a random Digital Ocean VPS, for example.

There may be solutions others have built into XF, but, even they, have their risks and their issues. Some of the add-ons I have seen and reviewed the code of have issues that may ultimately affect end users because they themselves are too far down the chain to effectively stem the tide of tens of thousands of IPs a minute hitting a database. Such solutions too will very quickly become less effective as adoption increases as the traffic patterns and signatures tend to change very quickly once one path gets defeated.
 
Why aren't you expecting Linux distros to solve the issue? ISP's? There are far better people to solve such issues than end of the line software developers.
For one simple reason that I have outlined ages ago already (and that you yourself have already proven just today but obviously failed to realize): Traditional approaches are typically IP based in one way or another. They are helpful, but - as we can see from the residential proxy problem - can only solve issues up to a certain point. From there you need behavioral analytics and for those to use the full set of possibilities those need knowledge about the application, its contents, its typical usage patterns and other things like that. While this analysis and deflection has not necessarily to happen at the border or within the application (and rather should not from a classical architectural perspective) the knowledge about patterns and behaviour has to come from the application. Who, I ask you, would be better suited to enable this than the people that built that application and for that reason know it inside out and can deal with it in a responsible way w/o collateral damage, better than any add on dev could?

Back to add-ons, this is what the developer market is for, for devs to build plugins for users to solve problems outside the scope of the base software.
Cheap answer. Add Ons are good for things that only a fraction of people need (and that therefor for all others would be unnecessary bloat). Things that everybody or almost everybody needs should be part of the core as every add on rises the complexity of the system, rises the risk for issues and conflicts and makes keeping the software up-to-date harder. As intelligente behavioral analysis is -for the time being - the relevant key for successful bot protection basically everyone needs it and it should for this reason be part of the core, at least in form of an API that others can build upon. Also, as this is a very sensitive area that can easily be broken through updates or influence performance negatively I think this should rather be implemented by the people who build the application than by 3rd party devs in form of an add on. The more, as it can be way better integrated during development then.
3rd-party services like Cloudflare or others have no knowledge about the application and the individual instance and typical patterns within - so they have no chance to provide the protection in question.

The solution, as server administrators, is to stop the traffic even getting to your expensive hot paths, shedding it before it even touches PHP or, even better, shedding it at the Edge, which is why solutions such as Cloudflare exist which, by the way, is primarily all we've done on this very forum to benefit from the reduction in guest numbers you have observed. There are other tools too, such as Anubis.
Sure. But as possibly everyone has recognized these classical ways of protection are no longer good enough - they miss a very relevant part of the problem and this is due to a structural problem they cannot solve.
Frankly if you're expecting a database driven PHP software to solve this problem for you, you will remain to be disappointed, even if some of the solutions in theory are currently helping.
Cheap argument and you claim I'd expect something I've never expected - I'v rather said quite the opposite and not just since yesterday. I've been talking about a multi-step setup for ages. It is not either/or, multistep is having both. Obviously one should filter as distant from the application or hot path as possible. But with traditional setups you will only manage to shrink the issue, not to solve it and you will miss quite a bit of bots/unwanted traffic. Still it is beneficial b/c this enables you to look closer at what's left at a second stage w/o overloading the application.
 
Last edited:
For one simple reason that I have outlined ages ago already (and that you yourself have already proven just today but obviously failed to realize): Traditional approaches are typically IP based in one way or another. They are helpful, but - as we can see from the residential proxy problem - can only solve issues up to a certain point. From there you need behavioral analytics and for those to use the full set of possibilities those need knowledge about the application, its contents, its typical usage patterns and other things like that. While this analysis and deflection has not necessarily to happen at the border or within the application (and rather should not from a classical architectural perspective) the knowledge about patterns and behaviour has to come from the application. Who, I ask you, would be better suited to enable this than the people that built that application and for that reason know it inside out and can deal with it in a responsible way w/o collateral damage, better than any add on dev could?
This is incorrect. You’re broadly right about the shape of the problem, but not about where the responsibility or solution sits.

IP-based approaches are still needed. Crucial, in fact. A lot of what we’ve done over the last 12 months has been around IP reputation, ASN reputation, and identifying traffic that should never be allowed anywhere near PHP in the first place. That is not an application-level decision. It is something that needs to be shed before the request reaches the application, ideally before nginx has done much meaningful work either.

We have seen a huge reduction in issues on XenForo Cloud simply by identifying and blocking traffic from sources that are consistently abusive: random data centres, certain hosting providers, obvious automation networks, and so on. That alone has shed a very significant amount of traffic before XenForo is involved at all.

And Anthony’s point is a fair one. How is it possible for someone to spin up thousands of GCP/AWS/etc. instances and start hammering random websites without those providers having any meaningful responsibility for the abuse coming from their networks?

You’ve seen the numbers yourself. Tens of thousands, sometimes hundreds of thousands, of guests hitting a forum. Even if XenForo had a comprehensive internal ban list, that still means the request has already travelled through the network, hit nginx, started PHP, bootstrapped XenForo, and likely touched session/cookie/routing/permission code before the application can even decide to reject it. At that point a large part of the cost has already been paid.

Yes, the harder problem now is residential proxies. But that still does not mean the answer is “XenForo core should solve it inside the application”. There are already plenty of places to see the shape of abuse: Cloudflare, nginx access logs, centralised logs, server metrics, etc. If thousands of unique IPs suddenly start hitting /threads/<id> URLs, you do not need deep XenForo internals to know something is wrong. You need something capable of slowing or shedding that traffic before it becomes PHP/MySQL work.

By the time XenForo is handling a thread request, it has already done a non-trivial amount of work. PHP has started, XenForo has bootstrapped, routing has happened, guest/cache/session/cookie handling may already be involved, and the request is on its way to controller logic. An add-on can do some defensive checks in that path, and some of them may help. But they cannot make that request cost zero. They are still downstream of the expensive part of the stack.

That is the point I keep making.

This is not me saying “nothing can be done”. Clearly things can be done, because we have done them on our own infrastructure. The guest numbers here have dropped dramatically from the worst bursts you mentioned, and the server is coping far better than it was. But that has not required special XenForo application analytics. It has required operating the infrastructure properly and using the tools available at the server/CDN/proxy layer.

XenForo Cloud is different because we operate that infrastructure. We control the servers, the logging, the firewalling, the proxying, the rollout process, and the operational response. Self-hosted installations are not the same thing. We provide the software; you operate the server.

We can continue improving XenForo itself. We can optimise hot paths, improve cacheability, avoid unnecessary work, and document sensible approaches. But if the expectation is that XenForo should compensate for every self-hosted customer’s lack of server/CDN/firewall expertise, that is not realistic.

Running a public web service in 2026 involves dealing with abusive traffic. If you self-host, that responsibility sits with you or with whoever you pay to manage your infrastructure. That is not unique to XenForo, or forums, or PHP software. It is the current reality of operating anything on the public internet.

Sure. But as possibly everyone has recognized these classical ways of protection are no longer good enough - they miss a very relevant part of the problem and this is due to a structural problem they cannot solve.
But they are good enough. That's what we've proved just by adding a couple of rules to Cloudflare?


But with traditional setups you will only manage to shrink the issue, not to solve it and you will miss quite a bit of bots/unwanted traffic. Still it is beneficial b/c this enables you to look closer at what's left at a second stage w/o overloading the application.
Well, it's solved here without further intervention needed. I'm not aiming to get the guest counts to zero, obviously. Yes, some bots might come through, but that doesn't matter. Cumulatively they're failing to have an effect and that's what matters. Spending engineering time on solving the problem at the application layer which might itself end up getting defeated is a waste of time and the fool's errand.
 
I'm also not adopting these Xenforo plugins because of performance and memory consumption concerns. I'd love to have put out an interim solution already, but i don't see performance aware database designs in them, @zeeb0t is probably the closest so far to solve the performance problem.


It is technically feasible to write one that's up to par.

On a 6 year old single core processor, memcached will perform 57000 read/write operations per second over the TCP/IP protocol. If you use unix sockets, that number probably doubles since creating and closing a TCP/IP port is a heavier operation than a memcached access.

If you optimize the data layout, you have an average of 2 read/write operations to make per hit. Each operation takes 0.0175ms on said CPU.
For bans, you can either refer up to Linux' IPTables ( very fast low level mechanism ), or refer up to an external firewall. Having the application look up the ban table on every hit should be avoided. You want something written in C/C++ to do that job.

Memory consumption of the state table?. My design started out at 800 bytes average per IP. A ton of work went into getting that down to 225 bytes avg per IP. At 225 bytes per IP, you're storing state on 10 million IP addresses in 2.25gb of ram. This is incredibly cheap when you consider the alternative is to spend a few megabytes for every web hit. Many possibilities exist to use LRU or disk storage of cold data to multiply this capacity.

Your third party IP reputation service cost too much? the answer to that is a mysql cache where each record has a lifespan of a few days. This will exponentially drop your API costs. If you have a server fleet, you can have a centralized server acting as a cached proxy and you can drop your costs even more.

What about if you get hit with a ton of unique IP addresses in a giant flood? well the answer is to start making bulk queries to the IP reputation service. This consolidates thousands of queries you'd need to make into a single operation. So as the unique IPs/sec go up.. so does your efficiency at retrieving the reputation of a single IP.

What if your memcached database, which stores the state of each IP address, loses it's data upon reboot? the most expensive lookup operation ( IP reputation service ) already has a cached value in mysql. So the cost of repopulating isn't too high. We could also steal an idea from redis to make the IP state table disk-backed at a tiny CPU/Disk cost if needed.

This very fast engine ( memcached as primary, with SQL backing expensive data ) mirrors the architecture Facebook used to make PHP scale to 1.3 billion users in ~2013. It's very likely to work today on hardware that's multitudes faster.

Anyways i'm done blabbing about this aspect because we are busy proving the theory as we speak.
 
I'm also not adopting these Xenforo plugins because of performance and memory consumption concerns. I'd love to have put out an interim solution already, but i don't see performance aware database designs in them, @zeeb0t is probably the closest so far to solve the performance problem.
Privacy concerns too. Most of them wouldn't be GDPR / privacy law compatible as they set long cookies and do fingerprinting that is undesirable. Not really something we could even legally condone in code that we ship.
 
IP-based approaches are still needed. Crucial, in fact. A lot of what we’ve done over the last 12 months has been around IP reputation, ASN reputation, and identifying traffic that should never be allowed anywhere near PHP in the first place. That is not an application-level decision. It is something that needs to be shed before the request reaches the application, ideally before nginx has done much meaningful work either.

We have seen a huge reduction in issues on XenForo Cloud simply by identifying and blocking traffic from sources that are consistently abusive: random data centres, certain hosting providers, obvious automation networks, and so on. That alone has shed a very significant amount of traffic before XenForo is involved at all.
Definitely that is the proper way to deal with these rogue bot traffic issues - you want to at each level filter out the bad so the least amount of them hit your application.

Yes, the harder problem now is residential proxies. But that still does not mean the answer is “XenForo core should solve it inside the application”. There are already plenty of places to see the shape of abuse: Cloudflare, nginx access logs, centralised logs, server metrics, etc. If thousands of unique IPs suddenly start hitting /threads/<id> URLs, you do not need deep XenForo internals to know something is wrong. You need something capable of slowing or shedding that traffic before it becomes PHP/MySQL work.

By the time XenForo is handling a thread request, it has already done a non-trivial amount of work. PHP has started, XenForo has bootstrapped, routing has happened, guest/cache/session/cookie handling may already be involved, and the request is on its way to controller logic. An add-on can do some defensive checks in that path, and some of them may help. But they cannot make that request cost zero. They are still downstream of the expensive part of the stack.

That is the point I keep making.
+1 utilising the many tools prior to hitting the application like Cloudflare, logs etc helps. Though would l do like one addons ideal of allow bots to transverse a lighter PHP-using path than regularly visitors so bots don't queue up and choke PHP and thus MySQL server which is the weak point usually. Or even a path that doesn't involve PHP/MySQL and is cached/precached at webserver/redis/memcached level.

Could be further advanced with Cloudflare Transform rules - request header injection https://developers.cloudflare.com/rules/transform/ and https://developers.cloudflare.com/rules/transform/examples/add-request-header-static-value/ so Cloudflare edge can tell Xenforo via custom request header that this request is possibly a bot and for it to transverse the alternate path to serve the request (when not 100% sure and you don't want to block it or if you also tie it in with Xenforo having insights to your cpu/memory usage and auto switch based on cpu/memory/request rate).

Such custom request header can also be detected at web server level too i.e. nginx lua module script inspection and detection of custom request header so it doesn't even need to touch PHP first. I use Cloudflare Transform rule custom request headers to pass Cloudflare Enterprise Bot Management bot scores and JA3/JA4 fingerprint values to my Centmin Mod Nginx server this way with custom Lua nginx module script. This way Nginx and my apps/sites are aware of Cloudflare Bot scores and JA3/JA4 fingerprints for various configs/paths https://developers.cloudflare.com/rules/transform/examples/add-request-header-bot-score/. Bring and pass Cloudflare level intelligence and data to your server and app level to do with how you please :)
 
Last edited:
+1 utilising the many tools prior to hitting the application like Cloudflare, logs etc helps. Though would l do like one addons ideal of allow bots to transverse a lighter PHP-using path than regularly visitors so bots don't queue up and choke PHP and thus MySQL server which is the weak point usually. Or even a path that doesn't involve PHP/MySQL and is cached/precached at webserver/redis/memcached level.
I do think some investigation into what we can do to improve guest page caching might be worthwhile. There is probably still some heavy work along that path which, if we can optimise and make it easier/clearer/document approaches for serving at the edge, or similar, might be worthwhile. Even if it was a manual thing where it's possible to enable it when stuff starts hitting the fan and it can be more aggressive in serving something very lightweight at the expense of perhaps being more stale.
 
IP-based approaches are still needed. Crucial, in fact.
No one has ever questioned that, so that is a bit of a straw man.
And Anthony’s point is a fair one. How is it possible for someone to spin up thousands of GCP/AWS/etc. instances and start hammering random websites without those providers having any meaningful responsibility for the abuse coming from their networks?
That wasn't Anthony's point at all. His point is performance and his argumentation, when you follow the thread, is "I dislike bots b/c they influence performance but I can deal with them by tuning my server performance. I don't care for the scraping b/c I consider the data public anyway and they may do with it whatever they like." Basically his motivation to lock out bots is perfomance, not protection of content.

Regarding the responsibility of source networks: Seems you haven't been following this thread. It would clearly be desirable and I have phrased this already many months earlier:

If I leave out the resident proxies I have currently blocked ~300ASNs, give or take, and barely any malicious traffic does come through any more. Of these 300 a guesstimate of maybe 100 to 150 of them are really notorious, so provenly a constant source of malicious traffic. If I can identify those as a hobbyist running a small forum it should be possible for anyone. Seems like a bit of a mystery why they are not simply cut off - it is such a small number in comparison, even if it were three, four, five or ten times as many as I identified. A bit frustrating.
In the meantime my list has grown to blocked 570 ASNs (including resident proxies) and somewhat around 75 blocked countries and I am still a happy camper.

I do still live on shared hosting with my small forum - so options are somewhat limited. Especially when it comes to ASN blocking. Therefor I am thankful for the IP Threat Monitor Add on - else all I had was .htaccess and this was about to explode due to size and complexity when I finally switched to Threat Monitor. Yes, it is not a good way from an architectural view. Yet I don't have performance issues.

In the end the question is what you want to protect, how you want to (or can) protect it, why and on which basis. We both want to protect forums, the why differs: You want to protect the performance of your forum and XF cloud (including protection from DDOS-alike attacks), I want to protect my content and the privacy of my users. Completely different targets. This why you favor CDN and gateway protection and don't mind, when something goes through as long as it does not affect performance. DDOS is not my actual problem and performance is not my actual problem. My technical options are for the time very limited and my forum is small. This does not mean it couldn't be a target for a huge wave (as we have seen with the thread starter with her 150-user forum) - just that I have not seen one coming to my forum until now for no obvious reason. Maybe because I started blocking very early (way before the huge waves started) and block pretty radical, maybe just luck. The most I had were 1.800 guests in parallel and this was a one timer - typically I am down to like 20-30 guests now and block between 30 and 95% of the incoming traffic. So different worlds and so far my approach works for me. So for a small forum (mine has just passed 4000 members) it might do the job and it is clearly better than nothing.

In a perfect world, blocking would surely happen on a gateway, not even on the same host let alone within the application. Just that the world isn't always perfect and measures should fit to the problem that one tries to solve.

Where our ends (could) meet again is the "based on what" do we block question. In the end blocking is based on criteria and happens via a probabalistic approach. The more (helpful) criteria you have, the more data and the more sensors you have the better your probability guessing. When Checkpoint added their "stateful inspection" to plain IP filtering some 25+ years ago people were in fear that this would cost so much performance that it would grind firewalls to a halt. Turned out it did not and even back then simple IP-good - IP-bad routines were not sufficient to do the job. You are still talking about more or less a simple IP filter on a Gateway while I have absolutely nothing against this but would like to add sensors and criteria to that. These sensors are behavioral and this is what you seem to be confusing: Just b/c sensors are within the application it does not mean that the application would need to do the blocking. What I would love to see is if the gateway does the blocking but takes into account intelligent behavioural data that the application delivers and that is individual to the forum in question.

In the end each blocking mechanism follows pattern matching. If you limit the patterns to IPs and their reputation or what Cloudflare says you miss out quite a lot of useful patterns that can help. Bot Guard i.e. does check the properties and abilities of the user agent - another pattern - and so does Anubis. But if you could take into account i.e. the age of a requested thread and how often this thread or threads of the same age are typically viewed you'd have another criteria. There are loads of these and these are individual to XF, so Cloudflare cannot and will not be able to use or let alone implement this - this has to come from within the application.

But they are good enough. That's what we've proved just by adding a couple of rules to Cloudflare?
Well, depends what you consider "good enough". A couple of thousand bots on my forum would clearly not be good enough for me. But as said: We have different goals.

Spending engineering time on solving the problem at the application layer which might itself end up getting defeated is a waste of time and the fool's errand.
I accept this answer - still I think you are missing out a big opportunity here. Not saying it would be trivial but if it worked it would be brilliant. However, given the challenges that XF faces regarding releases probably a bit of a dreamworld anyway.

However: I am in the process of preparing a move away from my shared hosting to a VPS and along with that will come a change in the technical setup as now the possibilities will be there. There will be a dedicated firewall and maybe it will even live on a different machine - not decided yet. Just to ease your mind.
 
No one has ever questioned that, so that is a bit of a straw man.
I never claimed it was questioned.

That wasn't Anthony's point at all.
Why aren't you expecting Linux distros to solve the issue? ISP's? There are far better people to solve such issues than end of the line software developers. This is the equivalent of asking every CMS, website stack, forum, etc, to solve the internet bad bot behaviour problem.
This was the point I was referring to that was valid. The problem should be solved way before it hits any software. But providers are letting it run rampant and leaving it up to the guys at the end to deal with. There are serious abuses of internet protocols and Cloud services that are not being dealt with.

Regarding the responsibility of source networks: Seems you haven't been following this thread. It would clearly be desirable and I have phrased this already many months earlier:
Yeah sorry for not reading nearly 1,000 posts, I don't have the time for that, unfortunately.

In the meantime my list has grown to blocked 570 ASNs (including resident proxies) and somewhat around 75 blocked countries and I am still a happy camper.
Some real human users aren't, I'm not sure you should be happy with the way you have things configured currently:

1783103621632.webp

Just vanilla Chrome from a normal ISP btw. The bot problem is easy if you just 403 everything. Something that I cannot do for several hundred servers from all over the world.

You want to protect the performance of your forum and XF cloud (including protection from DDOS-alike attacks), I want to protect my content and the privacy of my users. Completely different targets.
So even more the case that it's on you to implement the solutions you feel are necessary for your specific concerns. XenForo isn't going to help you protect your content. The web being crawlable and searchable and indexable is part of the normal state of affairs. Most customers want their content to reach as many people as possible, and privacy isn't really something that is relevant to this discussion. It might be for you, but that's just another example of the need for you to implement your own solutions and to stop expecting the software to do it for you.

You are still talking about more or less a simple IP filter on a Gateway
No I'm not.

What I would love to see is if the gateway does the blocking but takes into account intelligent behavioural data that the application delivers and that is individual to the forum in question.
The behavioural data you're talking about, once again, and I wish I didn't have to labour the point, isn't needed to solve the problem. We've proved that here, and I'm proving it across XenForo Cloud sites too.

But if you could take into account i.e. the age of a requested thread and how often this thread or threads of the same age are typically viewed you'd have another criteria. There are loads of these and these are individual to XF, so Cloudflare cannot and will not be able to use or let alone implement this - this has to come from within the application.
This isn't a measure of whether traffic should be permitted to load a thread in the slightest. Search crawlers will routinely hit threads that are ancient, most people wouldn't block that as this years or decades of content might be what drives the next top poster to their forum. Indeed, residential users might also find an old bookmark or a search result for a thread that is ancient that they need to see, but being met with a massive 403 Access Denied might put them off. There's no differentiator there, and the differentiators don't come from application specific stuff at all, they come from the behaviour of the request and the client in question, and whether they're hitting an old thread, new thread, a resource, a search or a random HTML page that doesn't exist, it's not something that is surfaced through XenForo, it's something that is surfaced through access logs and understanding how to find and categorise that information effectively. And at that point, that's where you can start challenging upstream at the edge or even just a simple rate limit. If you can't do that because of constraints of your hosting, that's not an application problem, it's a you problem.

Well, depends what you consider "good enough". A couple of thousand bots on my forum would clearly not be good enough for me. But as said: We have different goals.
As I said, most of the guests will likely be legitimate, the numbers aren't considerably higher than they ever were. Your goal matters to me (and most people) a lot less than you probably expect. You can push it all you like, but it's not the consensus concern across the sheer majority of customers, I promise you.

I accept this answer - still I think you are missing out a big opportunity here. Not saying it would be trivial but if it worked it would be brilliant. However, given the challenges that XF faces regarding releases probably a bit of a dreamworld anyway.
I'd challenge you on this that it seems rare for you to accept answers. I'm sure I'll get another encyclopaedic response to this because you don't seem to like people not agreeing with you. There's no big opportunity to be had here for us. The biggest opportunity is customers either learning to manage their servers effectively with the tools that have been working fantastically and improved for decades, or delegating the work to someone else who can.

It's not a dreamworld because of any supposed challenges you think the company has. It's a dreamworld on your side because a) anything we do or don't do would be highly unlikely to meet your goals anyway, and b) it's not by any means an appropriate use of engineering time for the product.
 
@Chris D

I think as a software company ( i run two of them ) it's our job to make sure your customers fall into a 'pit of success' with the product.
I can tell from Xenforo's design that a lot of love and care went into that - the problem is the incongruency with how much care went into the product but how little attention was put into helping the customer succeed here.

The minimum that could be done is provide a list of best practices to the self hosted customer. if they're capable of installing software on a linux server, they can probably handle that, so not much hand holding is needed.

Until then, we have this thread!

Privacy concerns too. Most of them wouldn't be GDPR / privacy law compatible as they set long cookies and do fingerprinting that is undesirable. Not really something we could even legally condone in code that we ship.

Don't we have the same issues with cloudflare, as they're effectively doing those things for you - the only difference would be that they're ( hopefully ) storing the results in a datacenter specific to the user?

I do think some investigation into what we can do to improve guest page caching might be worthwhile. There is probably still some heavy work along that path which, if we can optimise and make it easier/clearer/document approaches for serving at the edge, or similar, might be worthwhile. Even if it was a manual thing where it's possible to enable it when stuff starts hitting the fan and it can be more aggressive in serving something very lightweight at the expense of perhaps being more stale.

Good route. I'd rather have a bandwidth problem than a CPU/memory consumption problem.
Also, the faster we can close that TCP/IP port, the better when a site is getting whalloped.

I ran a profiler on a few parts of Xenforo, and it is pretty fast, the remaining fruit to pick is medium/high hanging.

BTW, i can't speak for everyone else but i appreciate you chiming in here.
 
Last edited:
I do think some investigation into what we can do to improve guest page caching might be worthwhile. There is probably still some heavy work along that path which, if we can optimise and make it easier/clearer/document approaches for serving at the edge, or similar, might be worthwhile. Even if it was a manual thing where it's possible to enable it when stuff starts hitting the fan and it can be more aggressive in serving something very lightweight at the expense of perhaps being more stale.
This is something that I've pondered myself over the past couple months. XenForo is fast, exceptionally good at request comes in -> data goes out response times. Despite that, there are still physical limitations to what the CPU, RAM, Disk, NIC, etc. all can push in and out at any given moment. Under extreme load events, based on the type of a server handling the serving of content, things can get crippled.

As such, I would love to see much deeper, built-into the admin control panel, CDN integration with Xenforo's static and semi-static content to block storage (AWS S3, CF R2, etc.). Reducing the amount of requests that PHP has to process is all part of the process at chipping away all the extra 'stuff'. Am looking at things like style.php, ./js/*, among a few others. We can already use the built in AWS/Block store feature set for static user-based objects (avatars, attachments, etc.). However, greatly expanding such block storage support to the other portions of XenForo would be an excellent start at reducing overall server load. Sure, I could apply overrides myself on my forum, but having it natively built in would be ace.
 
The problem should be solved way before it hits any software. But providers are letting it run rampant and leaving it up to the guys at the end to deal with. There are serious abuses of internet protocols and Cloud services that are not being dealt with.
Absolutely. But it hasn't happened in the past and it won't happen in future. There is too much money to earn for those who would have the leverage and one better should not hope for legislation or politics when it comes to complex technical issues, even international ones. The times of the self regulating internet when you could simply call a phone number from a whois record and things were solved on the spot are long gone. These were good times.

Some real human users aren't, I'm not sure you should be happy with the way you have things configured currently:

1783103621632.webp


Just vanilla Chrome from a normal ISP btw. The bot problem is easy if you just 403 everything. Something that I cannot do for several hundred servers from all over the world.
Thanks for stopping by. ;-) Yes, I am happy, thanks for asking. You are now officially collateral damage. The audience of my forum does come to 99,5% from the DACH area plus a bit of Benelux. We do have a hand full of genuine guests from the UK, but very few. As some UK internet providers were pretty nasty at some point regarding residential proxies those have been blocked. Logged in users can bypass the restrictions and for some users I built dedicated exceptions. As I said: I block pretty brutally and I have the luxury to be able to do that. Due to the limitations on my shared hosting I overblock in some countries to keep things simple - on the new setup I may lower the bar for some of the UK providers and see how it goes.
So even more the case that it's on you to implement the solutions you feel are necessary for your specific concerns. XenForo isn't going to help you protect your content.
Wow, that is a bold statement. Thanks for pointing this out clearly. I assume I am not the only one who sits in this boat.
The web being crawlable and searchable and indexable is part of the normal state of affairs.
We do no longer live in 2002, sadly. AI crawlers have changed the rules of the game and it is no longer about "crawlable and searchable" but about "stealing your content, sell it for profit and stop people from visiting your forum". Interestingly, @Anthony Parsons didn't get that point either. Look here, just a couple of posts back:


The behavioural data you're talking about, once again, and I wish I didn't have to labour the point, isn't needed to solve the problem.
I think wider parts of the IT security industry that have been busy creating and selling things like intrusion detection tools and and other sensor based behavioral stuff would disagree with you here.
This isn't a measure of whether traffic should be permitted to load a thread in the slightest. Search crawlers will routinely hit threads that are ancient, most people wouldn't block that as this years or decades of content might be what drives the next top poster to their forum.
It is one example for a tiny data point among hundreds. Not the only one and not the one that would alone foster a decision. Regarding search crawlers: don't be silly. You know and I know that it is easy to verify them and let them pass and that is what basically all protective solutions do and have to do already.

stop expecting the software to do it for you.
I don't "expect" it - I just think it might be a good idea. Your opinion is obviously different and this is fine.

It's not a dreamworld because of any supposed challenges you think the company has. It's a dreamworld on your side because a) anything we do or don't do would be highly unlikely to meet your goals anyway, and b) it's not by any means an appropriate use of engineering time for the product.
I guess if someone starts a startup with this business case he will have no issues collecting enough venture capital to have a nice life and maybe he would even create a product that becomes as successful as Cloudflare - just that such a person would not focus on XF as a target platform as it is too much of a too small niche. And I also guess that a couple of security companies work on things like that since ages - but now have the market to sell it and the technology to build it. In the enterprise market it is not even relevant if it really works and really brings benefit. ;)
 
Last edited:
Back
Top Bottom