Tell HN: Cloudflare silently injects its analytics when you switch nameservers

A few hours ago I switched my nameservers to Cloudflare in order to enable R2 bucket serving through my own subdomain, and I found out that it silently had injected a JS analytics snippet in my HTML-only JS-free site textlog.cc — I had to go to the Analytics dashboard, Add the site to the analytics and then disable the snippet. I find this approach entirely invasive, you should opt-in to features like that not have to opt-out. Just a warning out there to folks who might not be aware of this.

599 points | by stagas 23 hours ago

44 comments

  • traceroute66 4 hours ago
    I have "Enhanced Tracking Protection" strict mode enabled in Firefox and surprise surprise it is allowing `static.cloudflareinsights.com` not blocking it.

    So much for "Firefox shields you as you browse, blocking trackers automatically so you’re in control of your digital trail" Mozilla.....

    Edit to add:

    I have been doing a little experimenting, it looks like there might be some sort of hardcoded whitelist somewhere in Firefox ?

    When I first wanted to check, I visited `cloudflare.com` as it seemed the obvious place to find `static.cloudflareinsights.com` and Firefox shield blocks nothing there (hence I made this post)

    However, then I tried to find a different site, and after a bit of random searching/clicking around I found `www.tenforums.com` and `static.cloudflareinsights.com` is blocked on there.

    Its not a first-party domain thing, since cloudflare.com != cloudflareinsights.com.

    Surely `static.cloudflareinsights.com` should be blocked everywhere in strict mode, no exceptions ?

    Interestingly, when testing other sites, I have also been discovering other things Firefox shield is failing to block, e.g. `browser.events.data.microsoft.com` (tested on a non microsoft.com site)

    • Topfi 4 hours ago
      Standard, Strict or Custom? Strict should block that one for sure, will check once at home.
      • traceroute66 3 hours ago
        I just double checked `about:preferences#privacy` is "Enhanced Tracking Protection: Strict" and clicking "Advanced Settings" confirms the radio button is indeed under "Strict".

        Firefox 153.0.4

        • Topfi 2 hours ago
          Just saw the edit, all clicked now. As described this is expected behavior. The entitieslist (can't link right now because Github is down but got a local copy for some experiments) contains exceptions for owners of tracking URLs, in this case as a resource for Cloudflare.com and others owned by them only. Basically, because they are the same entity, they are considered one. Whether that could be communicated better by upstream, that's worth a discussion. Anyone besides Cloudflare.com has cloudflareinsights blocked.

          Here the specific entry for context from my local copy of ESR 153:

          {

            "entities": {
          
              "Cloudflare": {
          
                "properties": [
          
                  "cloudflare-quic.com",
          
                  "cloudflare.com",
          
                  "cloudflare.tv",
          
                  "cloudflarestatus.com",
          
                  "cloudflareworkers.com"
          
                ],
          
                "resources": [
          
                  "cloudflare.com",
          
                  "cloudflareinsights.com",
          
                  "cloudflarestream.com"
          
                ]
          
              }
          
            }
          
          }

          On a side note, spent a while learning how upstream Firefox works in-depth over the last few months, if ETP didn't block cloudflareinsights on pages outside Cloudflare.com I'd have lost any confidence build up and my project would likely linger even longer. Might just add a setting that totally excludes such exceptions if I can properly test it before release, seems there might be demand. Admittedly more for UX and honest communication clarity reasons (top setting truly prevents everything) then privacy, not the main goal of Hominis as a project.

          • traceroute66 2 hours ago
            Yeah, I was trying to get hold of the list from Github myself before posting the edit. It is unfortunate strict isn't truly strict, but at least now I know. Thanks for that.

            Pending Github fixing itself, could you confirm if `browser.events.data.microsoft.com` is on your local copy ?

            • Topfi 1 hour ago
              Yeah, agree, purely from a user expectation perspective, strict sounds like it'd suppress everything, not just third-party, especially with lower compatibility turned on.

              Yeah "browser.events.data.microsoft.com" is in, but mainly because it just ends up under microsoft.com anyways, subdomains are accepted inside the entitieslist.

              Here the full copy (initially wanted to share via Pastebin but some links triggered a spam filter): https://cdn.jsdelivr.net/gh/mozilla-services/shavar-prod-lis...

              If you or anyone else reading is interested, Mozilla has written some pleasant docs, lots to learn, easy to understand, comprehensive. Could not even consider what I am attempting without the resources they've provided: https://firefox-source-docs.mozilla.org/toolkit/components/a...

    • cryptonym 4 hours ago
      cloudflareinsights.com seems to be part of their list. If you see unexpected tracking, it could be worth reporting it to Mozilla.
    • kg 3 hours ago
      I wonder if this is necessary for Firefox users to get past Cloudflare's various bot/scraping protections?
      • traceroute66 3 hours ago
        > I wonder if this is necessary for Firefox users to get past Cloudflare's various bot/scraping protections?

        I also daily-drive Brave and Mullvad browsers, both of which correctly block `static.cloudflareinsights.com` and I never have issues with Cloudflare sites.

  • ChoGGi 3 hours ago
    Hacker News already knows, nobody gave shit when they first announced it. I assume because it didn't have AI in the title?

    https://news.ycombinator.com/item?id=45291323

    • docmars 2 hours ago
      I think it has more to do with the title sounding positive and not causing a stir to avoid controversy, maybe.
  • okzgn 20 hours ago
    An alternative: <meta http-equiv="Content-Security-Policy" content="script-src 'self' https://only-scripts-allowed-from-here.com">

    This makes the client only load self-hosted scripts, or scripts only from the specified origins, among the other directives CSP allows (e.g. restricting styles, images, frames, etc.): https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP

    • 1vuio0pswjnm7 16 hours ago
      If Cloudflare (CF) has r/w access to the response body, which CF does have by default, then CF can easily modify or remove that <meta> tag. The risk is not abated

      The risk of third parties injecting scripts, etc., e.g., analytics, advertising, etc., into response bodies (web pages) is usually cited as a rationale for using HTTPS^1

      CF somehow avoids the usual objections. CF is a MiTM but few people object

      1. For example, a data collection, surveillance and advertising services company that operates a www search engine and releases a web browser may not want an ISP to inject scripts, etc., e.g., analytics, ads, etc., into web pages as it might compete with the company's business. As a defense against such ISPs and other third parties that are potential competitors for data collection/surveillance/advertising services, it might favor HTTPS sites in its www search engine results, promote HTTPS at conferences discussing its web browser, etc.

      • 1vuio0pswjnm7 14 hours ago
        FWIW, I operate own DNS (including own custom root.zone) and I MiTM own TLS traffic with a localhost forward proxy. With this setup I get r/w access to response bodies, I add a CSP as an HTTP response header, and a long list of other traffic manipulation. There is no tracking, ads, telemetry, etc. Nothing leaves the computer unless I allow it. Operating DNS plus forward proxy gives me lots of control

        Letting Cloudflare (CF) operate DNS and direct traffic through its proxies gives CF control

        It's interesting to see how they use it under market pressures

        • zmgsabst 13 hours ago
          This is a tangent, but your setup sounds interesting to me — would you share more about how to configure such for myself?
          • 1vuio0pswjnm7 11 hours ago
            Many years ago I started to describe how it works in an HN comment and some reply complained about the idea of terminating TLS, i.e., decrypting, and then re-encrypting. Obviously this sacrifices something, e.g, speed, in order to gain _control_

            But this is what Cloudflare does and no one seems to mind

            Large companies also do this to protect their LANs

            I'm not running a CDN, only a small home LAN. I'm only procesing a small amount of traffic on a personal computer. This setup is fast enough for me, it's not slow at all

            The basic configuration is generally:

            1. Configure DNS to point to the local proxy listening address #1, a local address, e.g., using a wildcard in a zone file

            2. Configure the proxy to terminate TLS, "do stuff", and then forward to proxy UNIX socket path #2 or proxy listening address #2

            3. After doing the stuff, the proxy then sends the traffic over the internet

            The "do stuff" part is personal. It depends on what one wants to do. There are seemingly endless possibilities

            It's not likely the constantly changing configurations I use would be suitable for others. It's all based on personal preferences and usage habits

            I rarely use a graphical browser, for example

            I don't make piecemeal remote DNS queries like most www users. (IME, most A RR's stay the same over long periods.) I get bulk DNS data periodicallly from a variety of sources and load it into the proxy's memory. When I make an HTTP request there is either no DNS lookup because I'm using the IP address of the proxy or there is a single, local DNS lookup which returns the address of the proxy. There is no access to remote DNS

            When I first decided to start inspecting own TLS traffic by terminating and re-encrypting, I initially tested the idea using socat

            After I saw that it worked, I started using other software like haproxy

            I never expected this approach would work well enough but many years have gone by and I'm still using it. The configurations I use are much longer and more complicated than any sample I have ever seen on the www

            It's funny that Cloudflare is decrypting and re-encryting _other peoples'_ traffic, and this is thought to be AOK, but aside from large companies few people seem interested in doing this with their _own_ traffic on their _own_ computers on their _own_ networks

            It can be useful, IMHO

            • 1vuio0pswjnm7 4 hours ago
              NB. I actually do not encrypt then re-encrypt for the majority of HTTP requests I make

              I generate HTTP myself using own programs and connect to the localhost proxy using various TCP clients. The proxy does the encryption and remote connections not the client programs

              I process response bodies, using own software, into SQL, CSV, simple HTML or plain text

              I'm not using a graphical web browser to make HTTP requests

              This design isn't for everybody, but it's what I strongly prefer

              As such, in the way I use it, for the majority of HTTP traffic, no speed is sacrificed

              There are a variety of proxies that can be used to forward traffic. I use only a small selection. The largest one I use is haproxy, the smallest one I use is tinyproxy. Personal preference will vary

              The local DNS setup is just habit. I have been using djbdns and a custom root.zone for a very long time, before "privacy" was the issue it is today, and I have own particular prefetences. Every user is different. Using a firewall to send traffic to the proxy is an alternative

              The motivation for me was always experimentation, learning and control, not "privacy"

              "Privacy" is something one could aim for, if one has _control_. But IMHO without control, "privacy" is nothing more than marketing

            • dwedge 5 hours ago
              This sounds like exactly the kind of thing I'd waste a weekend setting up but what do you actually do with the decrypted traffic? What do you inject? I know you said it's personal but maybe some basic ideas.

              Do you find any websites or services that fail because of cert pinning or similar? Why do you restrict dns caching to periodic intervals, just for external privacy?

              In terms of the speed I doubt the time to decrypt and encrypt tls is noticeable in modern times, especially given how slow websites have become. It's not like a load balanced website behind cloudflare isn't already doing this 3 times

              • 1vuio0pswjnm7 1 hour ago
                "... but what do you actually do with the decrypted traffic?"

                I read it

                On the most basic level, consider logging

                I can add response headers with additional information about the request and these are stored in the log

                I can create a comprehensive log of every HTTP request, stored in a text file or SQL database

                I store these logs in an unpopular compression format that allows searching tar'd and compressed files using regex without decompressing them

                (This is not possible using zstd, gzip, etc.)

                I use this "browsing history" with a variety of programs

                Compare this with the design paradigm of storing history inside each individual program, as is the case with a so-called "modern" graphical web browser

                Other basic proxy functions that I use are (a) control over HTTP headers, including cookies, (b) control over TLS settings, including SNI, and (c) rewriting URLs

                The settings are site-specific and/or URL-specific. Lists of websites that have special requirements, e.g., need for SNI, specific HTTP headers, TLS version, HTTP versions, etc., are stored in text files. These are mapped into the proxy's memory. Not every website has the same requirements

                I also use CDN IP address ranges to make decisions about what requirements a website might have

                Compare this with trying to control these things from within each individual program. In some cases, it is not possible. Or compare with trying to control these things with Javascript. Generally I don't use a graphical browser. Nor do I use NodeJS. I use Lua. As such, Javascript is not the best solution for me

                Having lists of which websites have some specific requirement(s) allows me to learn about the sites I visit in ways that a so-called "modern" web browser does not

                The same goes for controlling DNS. I learn about where website operators outsource DNS, how DNS providers (mis)configure their services and when DNS data changes or remains static for years

                Perhaps the most important proxy function for me is the ability to avoid DNS lookups. The IP address data is stored in an SQL database using a simple, custom format, extracted to a text file and mapped into the proxy's memory

                Using a proxy allowed me to move away from storing DNS data in, and serving it from, zone files

                This is only a partial list of functions that I use. I like to experiment

                Proxies today can do much more than basic functions like the ones I mentioned

                For example, injecting Javascript or modifying an HTML tag before it reaches a browser is trivial, albeit inefficient from a purist perspective

                This is not something I need to do most of the time. I have relatively simple needs. Most times, I'm not using a graphical browser. I'm using the command line in textmode, no X11, etc.

                Cloudflare has a different use case

                What does Cloudflare actually do with the decrypted traffic. Only CF knows

            • phrotoma 5 hours ago
              Just out of curiosity, which proxy do you use?
            • mlrtime 6 hours ago
              How much speed are you actually sacrificing? I'd assume modern hardware can decrypt/encrypt TLS very fast.

              Side note: I remember working for a company in early 2000's that had Sparc III 1U servers we had to buy crypto accelerators to do this until I had to convince them to use dell/linux.

      • okzgn 15 hours ago
        Thanks for the background context, very interesting and realistic. Yes, of course it also has read/write access, though I always make sure there’s no interference of that kind. It has only happened to me once, where a binary I hosted on Pages didn't work when downloaded with wget (though that happened several years ago).
    • pcmaffey 15 hours ago
      Also can add "Cache-Control: no-transform" header, which prevents modifying the payload.
      • hahn-kev 14 hours ago
        Does it prevent it? Or just request it? There's no way to enforce that is there?
        • chrisweekly 13 hours ago
          CF owns it all, coming and going (request handling and response writing), thus can choose how/whether to interpret, ignore, modify or append any headers.
    • robin_reala 10 hours ago
      script-src 'none' is a more secure solution.
  • leinwand 13 hours ago
    You are right that Cloudflare enabled these analytics by default for our free plans in Septemeber of last year.

    We built Real User Measurement (RUM) into our free plans because it gives site owners actionable performance data they would not otherwise have. It is on by default for free sites fr the reasons we wrote about in the blog post below. It is easy to disable if you don't want it on. All of our paid plans are opt-in only.

    This also gives free plans access to our Observatory product at no cost. Observatory is a performance-monitoring tool inside the Cloudflare dashboard that combines real user data with simulated lab tests to help you measure and improve your website speed.

    Blog post: https://blog.cloudflare.com/the-rum-diaries-enabling-web-ana...

    • oefrha 11 hours ago
      Wow, this is ridiculous. Sites that have been running on Cloudflare for a decade+ silently got the treatment. Why the hell was there never a big banner telling me about this? I frequently log into the console.

      I get it that by being on the free plan (well I do pay for Registrar), I'm the product, but I also converted employers to paying customers of yours based on goodwill. This just destroyed about all of that, among other things. If I haven't given a damn about "powerful, in-depth monitoring solution that helps you debug and optimize applications" in over a decade, I certainly won't suddenly be "excited" about it when you sneakily inject it.

      • mlrtime 6 hours ago
        You get something for free, they announce it and you complain about not having a bigger announcement?

        If they had the banner and you missed it [or someone else] they would complain about the banner not being big enough.

        • oefrha 5 hours ago
          > they announce it

          Forgive me for not subscribing to their blog? That's not how you announce changes to customers.

          Using a Level 7 CDN is based on trust. This is not a trustworthy action, period.

          • _joel 5 hours ago
            If you're running infrastructure you care about, you really need to own the responsibility of keeping up to date with what you're supporting. Free or not.
          • bunbun69 4 hours ago
            Protest RIGHT NOW, not by complaining here but by getting rid of Cloudflare

            This is unacceptable

          • ChoGGi 3 hours ago
            It was on hacker news, back when they blogged it.

            Nobody cared: https://news.ycombinator.com/item?id=45291323

        • taspeotis 5 hours ago
          I bet those decade+ sites have been silently upgraded to TLS 1.3 too! Where are the complaints for that?
      • justsomehnguy 6 hours ago
        You can contract your comment to "I'm the product" and nothing would actually change.
    • tredre3 13 hours ago
      If RUM is such a good thing, why is it opt-in for paid users? Why push this gracious gift only onto free users?
      • socalgal2 7 hours ago
        Just guessing.

        * Cloudflare is giving you a "free" service - they'd like something in return. Seems reasonable to me

        * Paid customers are usually business that have different needs, on average, than free customers

        • jnovek 4 hours ago
          > Seems reasonable to me

          Only if they make it clear what they’re taking in return.

          It seems like almost no one in these comments was aware of this, they announced it but that announcement apparently didn’t reach most free customers. Cloudflare can do what they want, but now a bunch of people (myself included) trust them less and are less excited to recommend their paid products.

      • tacitusarc 12 hours ago
        I have broadly good feelings about Cloudflare but this warrants a response.
        • anon7000 10 hours ago
          Because paying business customers are a lot more sensitive to this type of change rolling out. They are particular about how they want their shit hosted. Which is totally fair. People on the free tier probably a lot more interested in free benefits and care less about a little change in their hosting.
          • cryptonym 9 hours ago
            Cloudflare needs the data. Useful to validate the impact of changes, build marketing content... Using the free tier for this is fair, they let you opt out, they give you a dashboard.

            If someone is mad, maybe they should pay or use a different architecture.

            • jnovek 4 hours ago
              I don’t think anyone in these comments expects to get something for nothing, it’s that MITMing your payload is something that feels like a betrayal of trust unless you are crystal clear that you’re doing it. Considering how many people in these comments are surprised by this, it seems like Cloudflare hasn’t been crystal clear.
            • whilenot-dev 8 hours ago
              > this is fair, they let you opt out, they give you a dashboard

              So they give you something else you didn't ask for and therefor it's "fair"? I think it's pretty dubious to extend services with such data collecting features without informing affected users first, and making it clear how to opt-out before its deployment. A blog post won't do, no.

              • cryptonym 8 hours ago
                You are not paying and it's a business. They need to get something from this deal and they'll maximize it: marketing, data, upselling...

                Collecting RUM and giving you the opportunity to turn it off is not that bad for a free service.

                Makes me wonder if their stuff is GDPR-compliant without consent. If not, then ok, maybe that's bad to turn it on by default.

                • hinata08 8 hours ago
                  > Makes me wonder if their stuff is GDPR-compliant without consent.

                  GDPR service providers and partners do not have to consent. Consent is for the users.

                  Services providers have to tell you when they collect your data, and they will most likely fail to do that if they don't even know their partner injects code.

                  *So you're liable if you host on cloudflare.*

                  Now, they somehow avoid this :

                  >when enabling Web Analytics, you can choose to drop requests from European and UK visitors if you so desire (listed here specifically), meaning we will not collect any RUM metrics from traffic that passes through our European and UK data centers. The version of Web Analytics that will be enabled by default excludes data from EU visitors (this can be changed in the dashboard if you want).

                  By default, it is only enabled for visitors from out of the EU, like so many services that respect your privacy and your concerns are their first priority

                • whilenot-dev 8 hours ago
                  Even on free tiers there are Terms of Use you'll need to agree to as a user of their services. Like I said, it's dubious to alter a service and collect data without informing the user first, free tier or not.

                  There's a reason I got emails from LinkedIn regarding its new AI training purposes, and they made it clear how to opt-out and provided a deadline. I'm on a free tier there as well. So I'd question the legality of this even before any discussions about GDPR enter the picture.

                  • cryptonym 7 hours ago
                    They are not collecting and using your personal data. To me (IANAL), it looks really different from LinkedIn.

                    GDPR is about legality and covers the LinkedIn case you mention.

                    • whilenot-dev 7 hours ago
                      > They are not collecting and using your personal data.

                      Do you see how GDPR doesn't apply, then? ...you're contradicting yourself.

                      I'd still question the legality of the data collection by altering the offered service without properly informing the affected users. Whether GDPR applies doesn't matter, and whether it's a free tier service doesn't matter either. You're a consumer of Cloudflare, so any consumer rights apply.

                      • cryptonym 7 hours ago
                        GDPR very much applies.

                        As a website owner, you are responsible towards your users for data collection (your architectural choices, your responsibility). This was my concern on GDPR.

                        Sibling comment says data collection is disabled in EU.

                        • whilenot-dev 5 hours ago
                          Cool, so you went from

                          > Cloudflare needs the data. [...] If someone is mad, maybe they should pay or use a different architecture.

                          To "they would violate GDPR".

                          Are you ok with that behavior then? And are you basing your ethical decision solely on the current legislation?

                          • cryptonym 4 hours ago
                            I never said "they would violate GDPR". I was questioning if it could be the case. Someone said it's not the case as the feature is turned off in EU. Reading their blog, it also looks like they don't collect much identifiable data.

                            When selecting free tier of such commercial MITM, opt-in RUM data collection is really far from the top ethical concern. I'm not saying it's a good thing and I'm not deploying their solutions to my websites.

            • Kevcmk 9 hours ago
              Shill
              • cryptonym 8 hours ago
                I'm not a Cloudflare customer and don't intend to actually use their services. To be transparent I got a free account for few experiments. I'm not working for them in any way.

                When it's free you know you are being used, collecting data is the game.

        • hecturchi 11 hours ago
          Because if something is free, you are the product.
    • schubidubiduba 10 hours ago
      Not sure what is more appalling. Silently injecting javascript tracking, or writing a marketing-speech response like this without any substance at all
      • Scaled 6 hours ago
        While bad, this is far from the first problematic cloudflare behavior. They host a lot of sites with illegal content and refuse to action abuse reports. I support legal free speech, but any business who knowingly serves blatant pirate websites really shouldn't be trusted to behave ethically.
    • deaux 11 hours ago
      > It is on by default for free sites fr the reasons we wrote about in the blog post below.

      Nowhere in the blog post does it give the reasons why it's A. on by default for free sites B. off by default for paid sites.

    • Puts 10 hours ago
      What an amazing display of double speak. The only thing I didn't get is how is the DOW doing?

      Btw I remember another time you tried to manipulate the DOM of peoples websites. It lead to Cloudbleed.

    • dchest 13 hours ago
      > measure and improve your website speed

      inserts 31KB JavaScript into tiny HTML pages.

    • jwr 9 hours ago
      > "gives site owners actionable performance data they would not otherwise have"

      As I understand, the next step will be to inject ads, to give CloudFlare actionable monetization strategies they would not otherwise have.

    • stagas 5 hours ago
      That’s cool, make sure I see it however on the onboarding screens. Big green switches (Proxy, Web Analytics) that I have to scroll through to get to the Ok so I can turn them off there.
    • sunaookami 9 hours ago
      Is this even GDPR-compliant?
      • hinata08 7 hours ago
        > Rather than count unique IP addresses (requiring storing state about each visitor), we simply count page views that originate from a distinct referral or navigation event, avoiding the need to store information that might be considered personal data.

        They don't store IP addresses (but other referral ids that identify users in a different way) ; and they exclude EU visitors by default.

        You do your opinion

        • sunaookami 5 hours ago
          Just saw that in the dashboard: "Enable globally", "Exclude EU". Kinda funny (in a bad way)
        • Mystery-Machine 5 hours ago
          > they exclude EU visitors

          GDPR is applicable on EU citizens, disregarding where they browse from. So either they have to track whether you're an EU citizen/EU visitor or they track EU visitors when browsing from outside of EU. This makes it not GDPR compliant.

          The main issue is that your privacy policy is most likely not mentioning this third-party tracking because you were not even aware of it. Who is going to be responsible? Who is going to be fined for not mentioning this tracking in _your_ privacy policy? You. (Your company)

    • boesboes 3 hours ago
      Fucking ass hats.

      I'm impressed how quickly cloudflare went from nice to evil cunts.

  • dchest 21 hours ago
  • kazinator 19 hours ago
    If you're only using Cloudfare for DNS, but HTTPS connections go directly to your server, how does it inject HTML?

    You must be allowing Cloudfare to terminate your HTTPS connections; i.e. using them for actual proxying.

    • tick_tock_tick 13 hours ago
      The OP doesn't understand what they are configuring they have Cloudflare setup as a proxy.
    • hackernud3s 19 hours ago
      The orange cloud icon in dns settings, in other words, but that's opt-out too. So yeah - double opt-out I guess.
      • ____tom____ 15 hours ago
        I have no idea what 'the orange cloud icon' means, as I'm not a CloudFlare used.

        But DNS/Name servers do not see HTML traffic, as the above poster mentioned, so it's not obvious how this change would matter.

        Is it that they are serving their HTML via CloudFlare, and cloudflare is making changing in its serving of their html?

        • supermdguy 14 hours ago
          Cloudflare sets up a reverse proxy as part of their core offering, so by default they can MITM your proxy. The “orange cloud” by a DNS record means it points to their proxy instead of your server.
          • vickychijwani 13 hours ago
            What a shame. I wasn’t expecting these dark patterns from Cloudflare at all.
            • hackernud3s 13 hours ago
              That's how you get DDOS protection / edge delivery, so it's not a dark pattern. I imagine it's the main reason why people would DNS through them in the first place.
              • vickychijwani 13 hours ago
                An “orange cloud” with no other indication to represent a feature that is enabled-by-default (with implicitly enabled analytics) sounds like quite the dark pattern. The UI makes the DNS record seem to point to A (your entry) but actually points to B (Cloudflare). This isn’t an oversight, it’s an attempt to obfuscate.

                Even if the choice to enable it by default makes sense for Cloudflare’s userbase, the implications are hidden and non-obvious.

                • furyofantares 11 hours ago
                  It's essentially the entire reason to use Cloudflare.

                  As sibling mentions it is indeed labeled and not just some icon. People just refer to the orange cloud UI for it for convenience and because it makes it easy to spot whether you have it on or not.

                  But regarding the icon, the icon is their company logo, it really is the primary feature. It's also not like you have to go find it in settings to turn it off after adding DNS record, it's part of the form when you add the record (default on, yes), and it's prominent when viewing the record.

                  • tjoff 4 hours ago
                    I don't buy that, there is no reason for 99.9999% of sites to use cloudflare.

                    The "reason" to use cloudflare is hype.

                    • furyofantares 2 hours ago
                      It's the reason for its existence and the reason people are choosing it. If they are making a mistake, hoodwinked by hype, that's totally unrelated to the point being discussed. I think you've just seized the opportunity to post your disdain for them without regard to the actual topic being discussed.
                      • tjoff 2 hours ago
                        Truly doubt that. Sure, but if they are making a mistake due to dark patterns then it is another thing.

                        This thread does indicate the latter.

                • mjmas 11 hours ago
                  The options are actually labelled as 'Proxied' or 'DNS Only', so that is actually quite clear.
            • kazinator 12 hours ago
              I would say that Cloudfare having customers who don't know exactly what they are getting (into) is actually a Cloudfare problem they should take responsibility for.
              • alt227 7 hours ago
                I would say its up to the user to research what they are using.
            • EtienneK 9 hours ago
              That’s not a dark pattern. That’s one of the core reasons to use Cloudflare.
              • 6031769 5 hours ago
                And of course by extension it is also one of the core reasons not to use Cloudflare.
  • userbinator 19 hours ago
    This reminds me of the old free hosts that would inject their own scripts/ads on pages hosted by them, but their implementation would do it only after detecting the closing HTML tag (either </body> or </html>, can't remember) and the various tricks to get around it, including omitting the tag (browsers don't care), rAnDoM case tags (some were hardcoding lower or upper and comparing case-sensitively), and messing with the content type and relying on the browser to detect correctly since it didn't inject into other types (not sure how the current browsers will handle that).
    • Terr_ 16 hours ago
      I'm getting flashbacks to Proxomitron, a localhost proxy in the HTTP days when it was also much harder/impossible to make browser plugins.
  • corford 6 hours ago
    If you're using free hosting and allowing that provider to mitm your origin's traffic, it seems a little naive to assume they wont eventually submit to temptation and start doing something like this.
  • outlines 20 hours ago
    Are you using CF as a proxy or only for DNS? I ask because I just went to check my domains on the dashboard (some purchased a few years ago, one purchased just a couple days ago), and none of them have Web Analytics enabled.

    I have all my domains set to DNS only, so no CF proxy. Wondering if that is why?

    • stagas 20 hours ago
      I just went and switched them to DNS only, they were on Proxy by default, that also should have been opt-in. Maybe I missed the option while switching the nameservers because I did it in a hurry but still.
      • cortesoft 19 hours ago
        I agree it is a bit confusing, but it makes sense if you think about the expected default use case, which is enabling the cloudflare CDN for customers. They expect people to be using their CDN.

        I use them for my registrar, because they offer domains at cost and you can’t beat that. But yes, they make it an extra step to use them without using the CDN.

        Once you figure it out, it is fairly straightforward, though, and you can’t beat the price.

        • Ayesh 10 hours ago
          If a registrar requires you to use their own nameservers, then they are no longer comparable to other registries.
        • prophesi 8 hours ago
          With the supply chain attacks happening in the JS ecosystem, this reminds me to advise against using CDN's.
      • TiredOfLife 20 hours ago
        > that also should have been opt-in.

        The proxy is like 99% of why people use Cloudflare

        • stagas 20 hours ago
          A simple screen when I did the switch that requires explicitly ‘Enable Proxy’ or ‘skip for now’ would have been enough. Also for ‘Enable Analytics’. None of these existed, or not very obvious otherwise I’d seen them.
          • TiredOfLife 9 hours ago
            In the DNS screen there is literally a column "proxy status" with the only color besides black and white being the orange of proxy enabled
  • purpleidea 21 hours ago
    Yikes! I see this too:

    <script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226..." integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"c0859b51a7804ab5a9cc8e9e2b2c4cde","r":1}' crossorigin="anonymous"></script>

    • kevincox 20 hours ago
      Yup, I explicitly had all anaytics turned off. But had a few sites using Cloudflare for caching. Now I'm checking and seeing this on all of them. This is gross and unacceptable. "Caching" does not mean "modifying my site".
      • zx8080 14 hours ago
        MITM attack, that's what it is. Why is this not in the news? Ah, no one cares.
        • zeafoamrun 12 hours ago
          It takes a lot of trust to let a CDN be able to terminate TLS traffic for you and this doesn't exactly give the warm fuzzies.
        • reaperducer 14 hours ago
          Why is this not in the news?

          Good point. There should be a place where hackers can get this kind of news. Some kind of Hacker News place.

      • chrisweekly 13 hours ago
        Adding a RUM beacon for observability / performance metrics capture, as an opt-out feature for free plans (opt-in for paid plans), is not exactly nefarious. Hopefully/presumably there was some communication before the change was rolled out.
        • matherial 13 hours ago
          No. I was on a free plan for years and found out by accident. It's interesting that you set "nefarious" as the bar. I'd simply call it "sleazy".
    • stackghost 15 hours ago
      I'm not seeing this on my site (if you want to check: https://stackgho.st), are you using their `strict` http settings? I.e. is your server terminating TLS or is theirs?

      edit: perhaps it's only for sites added after that policy came into effect

  • windexh8er 21 hours ago
    Isn't this well known when using CF as a proxy? Not sure how they would provide traffic / DDoS telemetry otherwise.
    • JoshTriplett 21 hours ago
      They're serving the HTML, they have every ability to track individual web requests without modifying the content they're serving.
      • windexh8er 4 hours ago
        I understand how it technically could work. My response was more centric to the fact that CF has been doing this for a long time and you should probably know better when selecting a vendor / feature like this.

        Again, this isn't anything new.

      • sscaryterry 21 hours ago
        100% But this does not give you any useful personal data :)
        • JoshTriplett 21 hours ago
          Or data for the increasingly invasive Cloudflare captcha.
  • celsoazevedo 21 hours ago
    Yes, they add the js if "web analytics" is enabled. I believe I had to manually enable it on my old sites though. Maybe it's enabled by default when adding new domains?
    • stagas 20 hours ago
      No, I hadn’t enabled for any site. I had to enable first to turn it off.
      • nilram 16 hours ago
        Maybe send it to them as a bug. Seems more like a mistake than malevolence.
        • PlotCitizen 9 hours ago
          They have a blog post about it so they know what they're doing.
  • Animats 20 hours ago
    > injected a JS analytics snippet in my HTML-only JS-free site textlog.cc

    Cloudflare injected hostile code into a site they are not even hosting? If it's HTTPS, how do they even do that?

    Does it violate the "exceeds authorized access" provision in the Computer Fraud and Abuse Act?

    • bawolff 20 hours ago
      The most likely answer is the person accidentally enabled the cloudflare reverse proxy without understanding what they were doing.

      It seems incredibly unlikely cloudflare does this when just DNS hosting, if for no other reason then that this would break so many things.

      • MrJohz 19 hours ago
        When you set up CNAME and certain other records in Cloudflare DNS, it defaults to (and heavily discourages you to disable) "proxied" records, which I believe means that the record points to a Cloudflare-owned host which then acts as a reverse proxy to whatever value you'd set. So from the console it looks like you've set the CNAME to a certain value, but in practice it'll be set to a different thing and transparently forward everything via Cloudflare. This is probably where the analytics get inserted, alongside a bunch of other Cloudflare features.

        You can disable this, at which point the record will be set as a normal DNS record.

        I can see the advantage of Cloudflare's proxy systems, but I wish they'd be clearer about when they're being used and not pretend that this is some DNS feature or that records have been set to one thing when they've actually been set to something else. If nothing else, it makes debugging DNS issues a lot more confusing, particularly if you're not a DNS expert.

        • bawolff 17 hours ago
          On the other hand. Proxying websites (for ddos protection, cdn, etc) is their primary product. Its what they are known for.

          I think a better question is: why would you be using cloudflare, if you didn't want that?

          • fragmede 13 hours ago
            There's still a naive expectation that the proxy isn't going to inject invisible content on your site that hits when you realize you were being naive.
        • gruez 19 hours ago
          >I can see the advantage of Cloudflare's proxy systems, but I wish they'd be clearer about when they're being used and not pretend that this is some DNS feature or that records have been set to one thing when they've actually been set to something else. If nothing else, it makes debugging DNS issues a lot more confusing, particularly if you're not a DNS expert.

          You could say the same about the reverse, ie. people set up their site on cloudflare, thought it was "protected", but really it's dns only and their servers are wide open. It's even worse if they migrated from another provider that was providing ddos protection.

      • Aeolun 16 hours ago
        > It seems incredibly unlikely cloudflare does this when just DNS hosting

        Not to mention impossible when ‘just’ DNS hosting. Though I suppose they could secretly replace the stated IP with one of their own anyway and then still proxy the content.

      • kazinator 19 hours ago
        If this is HTTPS, how would Cloudfare have the certificate for your domain so that browsers don't warn about a mismatch?

        Or is it that when you sign over DNS to a provider, they can take over your cert? They can "ass-cert" their own? :)

        • bawolff 17 hours ago
          Yes, the person who controls the DNS controls the certificate.

          What a certificate is supposed to verify is that traffic is going to the right place. If you designate cloudflare as the rightful host of your website then they can get a certificate.

          This isn't an edge case though. This is cloudflare's primary product. It is why users use them.

        • threecheese 18 hours ago
          As far as I know they terminate all TLS; it’s one of the tradeoffs using them.
          • muvlon 17 hours ago
            They have a product called Magic Transit that offers DDoS protection and such for plain IP traffic, where Cloudflare does not terminate TLS. Pricing is not public but starts in the five-digit USD per month range according to people I talk to.

            This may tell you something about how keen Cloudflare are to handle traffic they themselves cannot decrypt.

            • bawolff 15 hours ago
              Magic Transit uses BGP magic to work. That only makes sense at scale - i believe you have to have your own ASN for it to work.

              Realistically its a totally different product, and 5 digit price is probably cheap relative to competitors in that space.

              • muvlon 13 minutes ago
                Nope, you don't need your own AS for this to work, nor do you need to use BGP. They support static routes too. BGP peering support is actually "beta" according to Cloudflare: https://developers.cloudflare.com/magic-transit/get-started/...

                You do ideally want your own /24, though even that's not a hard requirement. And it can be provider-assigned space as long as your provider is willing to sign an LOA for you.

                As for competitors, there are a few that start in the low 4 digits per month for similar services. That's not to say Cloudflare doesn't have anything unique to offer though, they're great at scale and standardization.

      • stagas 20 hours ago
        I can’t recall if there was a setting to enable reverse proxy, if there was it was On by default since I didn’t expect to have reverse proxy enabled as well. But you can also rp without injecting a script. That’s overdoing it.
        • eaf7e281 19 hours ago
          If the cloud symbol is orange, it's enabled. I believe they'll even warn you if you disable it, a lot of people enable it unintentionally.
      • dboreham 19 hours ago
        I don't know what happened in this situation but beware that CF and similar providers are not true DNS hosting providers. They do DNS, but only so their CDN stuff works, and to lock their customers from using whatever DNS hosting they want. Various things that one might reasonably want to do with your DNS zone are not possible with their product. So use it only because you need to do so in conjunction with their core services.
    • Touchnow 20 hours ago
      TLS terminates at Cloudflare, not at your origin. When a record is proxied (the orange cloud), CF holds the certificate the browser validates against and opens a separate connection to your server, so it sees plaintext on both sides and can rewrite the HTML on the way out. Same mechanism that makes the WAF and caching work, so it isn't specific to the analytics feature.

      Worth checking which of your records are actually proxied. DNS-only ones (grey cloud) pass straight through and can't be touched.

  • neop1x 8 hours ago
    You are using MITM proxy as a service. In addition to analyzing all traffic and blocking legitimate users with captchas, they can inject stuff in there, too.
    • anon5739483 7 hours ago
      Unsuspecting reader: if you think this comment is interesting please search "deCloudflare" and "crimeflare" on the Internet. The repo is abandoned but it's still regularly taken down whenever it's uploaded. Cloudflare is literally the GFW of the world, is involved in a lot of suspicious activities and a huge danger to future of the open web. The company started as an intelligence honeypot service originally got funded by DHS in '08. You can DYOR on how things moved on from there.

      This one hasn't been taken out yet: https://gitlab.lain.la/dCF/deCloudflare/-/blob/master/readme...

      The taken down versions of the repo usually link here: https://en.wikipedia.org/wiki/Wikipedia:Uphill_battles

  • ttoinou 3 hours ago
    How could we ever find which hosting has ever changed the output html / files it sent ?

    How could we guarantee that the hosting service is only hosting ?

  • ValentineC 21 hours ago
    Took me a minute to realise this isn't 1.1.1.1 (which Cloudflare also runs), but their original website DNS hosting service.
  • sparsesignal 19 hours ago
    I noticed the same thing with email-decode.min.js on my site. It turns out it's the "Email Address Obfuscation" feature, which I didn't expect to be on by default.
  • jjcm 20 hours ago
    Thank you for this. I indeed had it up on mine. Cloudflare has switched defaults a couple times now, which honestly is wild to me.
  • stragies 8 hours ago
    Is there an entry in filter-lists used by ublock and other client-side content blockers for `https://static.cloudflareinsights.com/beacon.min.js/`?
  • the4anoni 10 hours ago
    Thank you so much for info about this. Does anyone has list of known "traps" like that on Cloudflare? I only want to use them for proxying my IPv6 website, SSL, and nothing else.
    • hinata08 7 hours ago
      Cloudflare used to effectively allow you to block users coming from Tor or proxies, forcing them to chose between not visiting your site or disabling their privacy features. (when Akamai was able to still allow legitimate users)

      They do a much better job these days, at least

    • PlotCitizen 9 hours ago
      There are countless objections to many of the things the Cloudflare is doing. If you only need it for a small number of things perhaps it may be worthwhile to look if at whether there are alternatives to CF for those use cases.
  • BorisMelnik 21 hours ago
    yep, last website I did was JS free 100% except that pesky cloudflare script
  • jesterson 15 hours ago
    What else would you expect from Cloudflare?

    It this point in time it is somewhere between GoDaddy and RyanAir in dark pattern usage

  • p0w3n3d 19 hours ago
    Spies. Spies everywhere
  • Symbiote 20 hours ago
    It's not necessary to use Cloudflare hosted DNS to use R2 with a custom subdomain.

    Make a CNAME record the same way you would for a CDN subdomain.

    (I am not yet running this in production, YMMV.)

    • hackernud3s 19 hours ago
      Then you don't get edge cache though, right? And maybe some other features?
      • johneth 7 hours ago
        The benefit of not being MITM'd by Cloudflare is probably worth it in many cases.
  • pudgywalsh 21 hours ago
    You left out the part about how you use them as a reverse proxy, which is decoupled from DNS. One is coincidental; the other required.

    If they can inject script, they can also snoop on all your cleartext traffic without you knowing....

    • stagas 21 hours ago
      Oh gosh I didn’t enable anything like that also. I just wanted the nameservers in order to serve the bucket under my subdomain. What else is there I wonder?
      • temp0826 19 hours ago
        The main reason anyone chooses cloudflare is for their CDN (which I suppose is a "reverse proxy"...not a way I'd refer to it but technically yes that's essentially what it's doing). If you don't need the CDN or any of the other fancy features there are plenty of straight DNS providers out there (and often provided by the registar these days).
      • stagas 20 hours ago
        Ok to turn this off you go Domains → Overview → your.site → DNS → Records → then Edit each entry to DNS Only (gray cloud). MITM gone now (I hope).
      • kazinator 19 hours ago
        OK, how can Cloudfare edit your HTML without it passing through your server?

        If the browser connects directly to your web server, how can there be Cloudfare's analytics stuff?

        Check what IP address you are connecting to when you load textlog.cc. Is that an address that you control? If it's not an address that you control, where is it getting your page, and is that not called proxying?

    • johntash 21 hours ago
      Indeed. I have several domains using cf for dns only and they don't/can't inject anything into those sites.
      • sebastiennight 19 hours ago
        "can't" is incorrect. As your name server, they can decide to turn the reverse proxy/caching at any point in the future, write an obscure blog post about how this is the best solution for all (a post that gets 2 comments on HN due to other news that week), and you'd only find out about it 11 months later in a thread like this one.
    • camel_gopher 12 hours ago
      Why would they snoop your traffic?

      Ah, because they can.

  • monitorion 20 hours ago
    We use Cloudflare tunnels for connecting distributed workers to central infrastructure. Haven't seen this on tunnel traffic, but good to know it happens on nameserver-managed sites. Another reason to audit what your CDN injects — same applies to checking your security headers regularly.
  • minraws 21 hours ago
    Is there an opt-out mechanism at least? CF is burning goodwill in months it built over the last decade.
    • eXpl0it3r 8 hours ago
      If you navigate to the domain itself, then to Analytics > Web Analytics there's a Quick Action for the RUM Settings.
    • busymom0 20 hours ago
      Yes there is. I have it disabled on mine:

      https://limereader.com/

  • jwr 9 hours ago
    Here we go. First, get everyone on the internet to use a free service (nameservers and CDN caching, which BTW is mostly unnecessary for pretty much everyone out there). Then, inject analytics, to "give site owners actionable performance data they would not otherwise have". Then, inject ads.

    In the meantime, also implement "bot protection" and get everyone on the internet to outsource the decision on who can access their website. With no appeal.

    I'm increasingly worried about Cloudflare.

  • endre 7 hours ago
    you wanted the cloudflare, you got the cloudflare.
  • csomar 21 hours ago
    To add to your experience: It was also very hard, for me, to find the setting that disables this JavaScript.
  • sitzkrieg 16 hours ago
    cloudflare is malware, what did you expect?
    • fragmede 13 hours ago
      No it's not. You don't have to like them, but malware is "any program or file built to damage, disrupt, or secretly gain access to a computer, phone, or network". Cloudflare is many things, some good, some bad, but they don't secretly gain access to your system, you have to choose to install it, so it's not malware.
      • hinata08 7 hours ago
        >they don't secretly gain access to your system

        They are only "enabling Web Analytics by default" "by providing a powerful, in-depth monitoring solution that helps you debug and optimize applications" when users do not come from the EU

        Cloudflare is doing a great job most of the time, but I feel like this feature was speed run through approvals and could use more discussions

      • PlotCitizen 9 hours ago
        You choose to install it on your website if you own a website, but if you're surfing the world wide web, then a lot of the places you visit are increasingly being gatekept/hidden behind Cloudflare pages meant to "challenge" you if you take anti-fingerprinting measures.

        Presumably these include any measures which would counter their operating model of tracking users on the web, under the excuse of stopping bots.

  • denkmoon 13 hours ago
    Maybe don't use CF if you don't want someone fucking with what you're serving. It's their entire raison detre.
  • sebastiennight 19 hours ago
    A public service reminder to anyone setting up their domains that there are many alternatives to Cloudflare, like EG Bunny.net (I am not affiliated, just a happy customer) and that by using one of these other DNS providers, you

    - play your small part in keeping the Internet open

    - delay or avoid entirely the enshittification that is 100% foreseeable when buying the "free" services of a quasi-monopoly vendor.

    If you're not an enterprise customer, alternate providers will also give you every single feature you could ever need and more, and fewer surprises like the OP's.

    • mbravorus 11 hours ago
      if you aren't paying, you aren't buying
  • moktonar 21 hours ago
    Surprise! The man in the middle man-in-the-middles! This is only the beginning, when you’ll get used to this they’ll do worse and worse, enshittification, remember?
    • _def 21 hours ago
      If I wouldn't know it better I'd sometimes think some of the big tech shops are just fronts for centralizing the net.
      • Bender 20 hours ago
        I don't know what would give anyone that idea. [1]

        [1] - https://www.youtube.com/watch?v=a3Xxi0b9trY

      • LoganDark 21 hours ago
        Cloudflare is doing this already. Once they had enough monopoly power, they started a program to block all bots that don't undergo invasive KYC procedures. Eventually, they might become a KYC broker for regular browser users too. The free internet is over.
        • nephihaha 6 hours ago
          Cloudflare will be linked into personal ID soon.
        • sssilver 21 hours ago
          #savetheinternet
      • cryo32 19 hours ago
        That's exactly what they are.

        And they can fuck off.

  • deadbabe 13 hours ago
    Why do people care? This is hardly anything malicious.
    • eXpl0it3r 8 hours ago
      Hardly anything malicious ... yet and even that's debatable.

      Yes, when you proxy anything through Cloudflare (CF) you give up on having your contents encrypted as CF terminates the TLS endpoints, but going from this to changing the content of the served site and injecting JavaScript is quite a big step and likely not what a lot of people would want nor expect. Your JavaScript-free site becomes a site that ships JavaScript without you knowing or having done anything.

      Additionally, this introduces additional tracking of users, which a lot of people don't want.

      And finally, there's the slippery slope. Today it's RUM, tomorrow it's ads or something else? Once CF starts modifying the user's content, what's stopping them from doing it more and more?

      • cryptonym 2 hours ago
        CF tested the water with polyfill.io 2 years ago. Everyone liked them modifying user's content. We are now on the "more and more" side.
      • deadbabe 3 hours ago
        Slippery slope doesn’t apply here, because at the point the slope becomes too slippery, you can just get off and find a new solution. Maybe you don’t proxy at all.

        For now, a pure JavaScript free site and a JavaScript-free-except-a-bit-of-analytics does not make meaningful difference to visitors of the site. The benefits of proxying are more important.

    • Kim_Bruning 4 hours ago
      Say I'm a vegetarian restaurant, and I contract out my delivery service.

      One day the delivery service starts adding free sausages to every delivery on an opt-out basis.

      By the time you realize, they'll already have delivered adulterated meals. You won't have a lot of customers left!

      People are often vegetarian for ethical reasons. In a similar way, many people have Ethical Opinions (tm) about Analytics as well. They don't like it when other people collect private information about themselves, and refuse to Do Unto Others.

      But even if you're fine with analytics in general: When intermediaries and other transitive dependencies (like software libraries) start injecting analytics on an opt-out basis, you simply can't control what's going on. And that's before we talk about the ethics and legality of third parties modifying content in-flight.

      In the EU, the law actually codifies the ethics at play here (GDPR). Several people point out that cloudflare disables this 'feature' for the EU. This makes a lot of sense, because it would have been a huge mess for everyone impacted to have to go to their customers with a "sorry, we leaked your PII, here's how we'll make you whole"; as well as possibly lawsuits against cloudflare to recover those damages upstream.

      • cryptonym 3 hours ago
        For delivery service, it's typically done with a closed box so you get exactly what has been prepared.

        Here you told them to unpack the food and repack it (TLS termination), filtering order (WAF), reheating pre-made food (cache) and they offer service to even prepare food or part of the food (edge compute). When your food is not available they will serve their own (error pages), with their brand visible. At that level of service, it's not so surprising to have extra stuff included.

        If you are vegan and care about your customers (conservative on data collection and JS), maybe you should use a vegan architecture and not give your last-mile to the cheapest (free-tier) all-purpose repacking kitchen and delivery service.

  • CommanderData 8 hours ago
    Personally not sure what the concern is unless you only use Cloudflare for DNS only.

    They see everything that passes through their proxy, and if they wanted to perform analysis on a site they're interested in I really wouldn't be surprised if there's a clause in the ToS that allows them to do it.

  • yogorenapan 20 hours ago
    Noticed this the other day as well. Sketchy as fuck. I didn't have analytics enabled. I had to go and enable to get access to the option to turn this off
  • evalystai 19 hours ago
    [flagged]
  • T3RMINATED 3 hours ago
    [dead]
  • ozereray1 7 hours ago
    [flagged]