121 comments

[ 3.8 ms ] story [ 93.2 ms ] thread
So are you able to get free inference now that you decrypted this?
> These properties only exist if the ChatGPT React application has fully rendered and hydrated. A headless browser that loads the HTML but doesn't execute the JavaScript bundle won't have them. A bot framework that stubs out browser APIs but doesn't actually run React won't have them.

> This is bot detection at the application layer, not the browser layer.

I kind of just assumed that all sophisticated bot-detectors and adblock-detectors do this? Is there something revealing about the finding that ChatGPT/CloudFlare's bot detector triggers on "javascript didn't execute"?

"Sophisticated" may vary, but for a lot of EU media products you can just block the script that launches the paywall/consent overlay. Sometimes disabling JS does it; sometimes activating reading mode works.
and chatgpt was then used to write this article. at least try to clean it up a bit
Presumably this is all because OpenAI offers free ChatGPT to logged out users and don't want that being abused as a free API endpoint.
Perhaps the author should have made it clearer why we should care about any of this. OpenAI want you to use their real react app. That’s… ok? I skimmed the article looking for the punchline and there doesn’t seem to be one.
For me the interesting parts of the article is how author got to the decompiled checks and what the checks are. Anti-bot is an interesting space.
Why does every article need a 'punchline'? It's a technical analysis. Do you expect punchlines when you read recipes or source code?
Imagine if they'd put as much effort into making a decent frontend experience.
I just don't understand why bot owners can't just run a complete windows 11 VM running Google Chrome complete with graphics acceleration.

You can probably run 50 of those simultaneously if you use memory page deduplication, and with a decent CPU+GPU you ought to be able to render 50 pages a second. That's 1 cent per thousand page loads on AWS. Damn cheap.

I am reasonably sure that these kind of fingerprints can detect if the browser is inside a VM.
… yup?

I mean you missed the minigame of preventing Chrome from signaling that it’s being programmatically (webdriver etc) driven and tipping your hand, but … yup?

It's absurd how unusable Cloudflare is making the web when using a browser or IP address they consider "suspicious". I've lately been drowning in captchas for the crime of using Firefox. All in the interest of "bot protection", of course.
I use firefox daily and I don't encounter the problems you describe, might be worth looking if there's some other issue.
(comment deleted)
That's not Cloudflare trying to make your life hard.

It's the reality of how bad the bots have become.

At times I'm completely locked out of a website and Cloudflare asks me to email the website owner to get the issue resolved.

.. how do they expect me to find the website owner's email if I can't access said website?

sometimes when there is mafia you get no option but pay pizzo

hence i am just using cloudflare remote browser rendering.

Heaven forbid you not use JavaScript, then they can't <s>track you</s> keep the internet safe!
Why does ChatGPT slow down so much when the conversations get long, while Claude does compaction?

My best guess is -- ChatGPT is running something in your browser to try to determine the best things to send down to the model API –- when it should have been running quantized models on its own server.

I am shocked openai collects data about it's users before users have the opportunity to send the same data to openai servers!
I mean, I can easily get them to behaving defensively for not being abused. But MBP with M5 here, my chatgpt tab always get stucked when I hit some prompt.

Really really bad user experience, wondering about when they will leave this approach.

Does anyone know how this is integrated on the Cloudflare side and across the app? Is this beyond standard turnstile? Is this custom/enterprise functionality? Something else?
If you have AI write a blog post for ya, when you think it's set, check word count (can c+p to google docs if AI can't pull it off with built in tools), and ask it to identify repetitions if it's over 1000.

Also, you can have it spotcheck colors: light orange on light background is unreadable, ask it to find the L*[1] of colors and dark/lighten as necessary if gap < 40 (that's minimum gap for yuge header text on background, 50 for text on background, these have gap of 25)

I haven't tried this yet, but, maybe have it count word count-per-header too. It's got 11 headers for 1000 words currently, makes reading feel really stacatto and you gotta evaluate "is this a real transition or vibetransition"

[1] L* as in L*a*b*, not L in Oklab

My theory is that "AI" doesn't really have any long term paying customers and the majority of the "users" are people who have cooked up some clever hack to effectively siphon computing power from these providers in an effort to crank out the lowest effort ad supported slop imaginable.

Every provider seems to have been plauged by these freeloaders to such an extent that they've had to develop extreme and onerous countermeasures just to avoid losing their shirts.

What's the word? Schadenfreude?

ai slop analysis finding CF detects non javascript capable browsers with no punchline
Hey! I'm Nick, and I work on Integrity at OpenAI. These checks are part of how we protect our first-party products from abuse like bots, scraping, fraud, and other attempts to misuse the platform.

A big reason we invest in this is because we want to keep free and logged-out access available for more users. My team’s goal is to help make sure the limited GPU resources are going to real users.

We also keep a very close eye on the user impact. We monitor things like page load time, time to first token and payload size, with a focus on reducing the overhead of these protections. For the majority of people, the impact is negligible, and only a very small percentage may see a slight delay from extra checks. We also continuously evaluate precision so we can minimize false positives while still making abuse meaningfully harder.

Chatgpt banned me after I said disparaging things about Sam Altman in a chat.

When I appealed the ban, I was told that I couldn't be told exactly why I was banned, but if I wrote a written apology and "promised to never do it again" my ban could be appealed.

I asked for an update on the ban via email every month for over a year.

Maybe you could tell me a little bit about that process?

> we want to keep free and logged-out access available for more users.

And THANK YOU for that!

Being able to use ChatGPT and Grok without signing in is a big part of why I like those services over Gemini etc.

Hell, dummy Claude won't even let me Sign-In-with-Apple on the Mac desktop, even though it let me Sign-UP-with-Apple on the iPhone! BUT they do support Sign-In-with-Google!!? What in the heavenly hell is this dumbassery

In long threads in chatgpt, it grinds to a halt in both Chrome and Firefox. Please fix
the company that scrapes every until it collapses really needs to protect itself from scraping. Lol.
Hey Nick, I find it concerning this account is. Frayed just to comment on this thread. And never even reply back to any of the real concerns.

Here to hoping this is real person and actually created account out of concern and sharing.

Paying customer since inception here.

I presume the local ChatGPT.app has even more measures to prevent automation, right? Presumably privacy-invasive ones as it is customary these days?

Is there a way I can opt out? I really, really, really don't like it.

Hi Nick, first of all, very cool of you to respond here instead of letting us all sit in the dark. I think that's what makes HN special.

That said, is it not a little bit weird that you want to protect yourself from scraping and bots, when your entire company, product, revenue, and your employment, depends on the fact that OpenAI can bot and scrape literally every part of the internet? So your moat is non-hydrated react code in the frontend?

> These checks are part of how we protect our first-party products from abuse like bots, scraping,

Do you guys see the irony here?

For what it's worth, I switched to Gemini because of the long ChatGPT load time. Gemini loads as fast as Google Search.
> [...] we protect our first-party products from abuse like [...] scraping [...]

what an odd thing to say for someone whose product is built entirely on exactly that

But why block the ui until then? Surely you can just not make any requests until the checks are complete?
> we protect our first-party products from abuse like bots, scraping, fraud, and other attempts to misuse the platform.

Isn't that how you build your service from the very start? How ironic.

> A big reason we invest in this is because we want to keep free and logged-out access available for more users.

Thank you for the reply, Nick. It wouldn’t be a problem to disable the tracking for authenticated users then, would it?

The reason why you did it is clear, why you guys settle down for such a poor implementation is why this thread exists
Still feels very anti-consumer.

If every company behaved like you do, the internet would be a much worse place.

In fact, OpenAI has already made the Internet a much worse place, already much, much less open and much less optimistic about its own future than it was even five years ago...

(comment deleted)
Why send the Turnstile bytecode encrypted ? Surely people savvy enough to abuse the system will find out how to decrypt it, see OP, and it gives the impression that you are trying to hide stuffs you're not proud about.
History will not be kind to you and your ilk. Quit your job.
I really appreciate the free options, without even needing a login. Wish they would also keep the small free weekly allowance for Codex.
Earnest question: if I was feeling lazy and security-conscious at the same time, would I be better off...

(A) opening chatgpt.com in qubes (but staying logged out, i.e. never creating a chatgpt account)

-or-

(B) creating a freemium chatgpt account

?

(Obviously, the "best" answer would be something like running a local LLM from an airgapped machine in a concrete bunker :) But that's not what I'm after).

>abuse like bots, scraping

10/10, I've got no notes

> These checks are part of how we protect our first-party products from abuse like bots, scraping, fraud, and other attempts to misuse the platform.

Isn't this the same behavior used by AI companies to gather training data? Pot, meet kettle.

<protect our first-party products from abuse like scraping>

Abuse from scraping has long been a serious problem for many, good job!

Protecting your site from bots and scraping is absolutely hilarious considering how you acquired (read: stole) the data you trained your bot on dude.

Just yank that ladder up behind you.

> I work on Integrity at OpenAI

Irony is truly dead. Show you have integrity by quitting your job

No, leave it. Surely the mighty OpenAI can deal with the scraping. At least, it seems to think everyone else can
Fwiw, I stopped using ChatGPT and went to a competitor because the checks slow down ChatGPT so much that the webapp becomes unusable in anything but a new short chat. CPU usage goes to 100%, you can't type, the entire tab freezes, etc. It's a miserable experience to use and I'm on a relatively new MacBook not some old computer. If you read around it's a very common problem people have been having for a while now.
Why are all these checks still performed on an authenticated, paid user?
As a free tier user I only get like three queries in now without model quality reduction, so I'd say your bases are covered as far as GPU costs around misuse.
Are you disabling them for paying subscribers?
> protect our first-party products from abuse like bots, scraping

You do see the irony here?

Would OpenAI also consider renumerations to every site they have scraped that had a robots.txt file and they chose to ignore it anyway? Feel free to not answer this question.

I have kind of lost count of how many content creators have said personally to me traffic is meaningfully down because of all these chatbots. The latest example is this poor but standup guy: moneyfortherestofus.com.

I understand it's not your area, but can you please politely tell your colleagues that the clickbait-type teaser questions from the latest model are absolutely infuriating and are quickly leading to me abandon the platform entirely?

If you'd like, I can write a two-sentence paragraph to send to your colleagues. It contains a special phrase which most colleagues will find difficult to ignore. Would you like me to do that?

Thanks. I've used ChatGPT a million times and never had any input issues.
Hi Nick, do you believe what you say? You scraped the shit out of everyone
It has not been negligible for me, and, however you're doing this, there is significant room for improvement.

There have been times when, across about ten minutes of usage, most of which is me typing on iOS Safari, it drained 15% of my battery. There is no functional justification for this beyond poor code quality. (It was on a long conversation FWIW.)

This when I'm logged in, with a paid (Plus) account, connected to a very old email address with a real user profile. That can't be the result of super-clever bot defense measures, because it's merely an inconvenience on desktop. And if you genuinely believe that email has been compromised, why aren't you reaching out the to the account owner, as the account isn't otherwise connected to fraud by your heuristics?

However brilliant the LLM agent it is, I'm seeing a lot of unforced errors regarding how you implement a web interface to it. If it makes you feel any better, it doesn't really register compared to all the bloat I see on other sites.

You do not ever trust the client side. Sometimes being simple is good enough. The maximum you can do is put rate limits on the IP address and/or user account. You just do not want some one to use the product at machine speeds.
> how we protect our first-party products from abuse like bots, scraping, fraud, and other attempts to misuse the platform.

Are you applying the same standards to your own scraper bots?

Kudos for trying

This whole thread was like watching a swarm of ants try and take a grasshopper down

Hi Nick, the lag is quite bad in the field, honest. In desktop app in this case/datapoint. There was that "halt and catch fire" episode where they spoke about a millisencod threshold of delay that separated usability and non. Solvent hw and fiber connection.
> These checks are part of how we protect our first-party products from abuse like bots, scraping, fraud, and other attempts to misuse the platform.

The lack of self awareness...

Do you do those checks only for users without accounts or also for those with accounts?
Another AI-slop article.

Sick.

I imagine to stop web automation from getting free API like use of the model
> A headless browser that loads the HTML but doesn't execute the JavaScript bundle won't have them.

this is meaningless btw. A browser headless or not does execute javascript.

To prompt a discussion that's purely technical: I'm interested in how this was done.

Specifically, Turnstile as far as I'm aware doesn't do anything specifically configurable or site specific. It works on sites that don't run React, and the cookie OpenAI-Sentinel-Turnstile-Token is not a CF cookie.

Did OpenAI somehow do something on their own API that uses data from Turnstile?