03-30 02:10 · 国际,新闻,BBC,国际
One month into the conflict in Iran, Trump's gut-instinct approach is not proving effective, writes the BBC's international editor.
Jeremy Bowen: Trump is waging war based on instinct and it isn't working
Some old truths about warfare have been knocking on the door of the Oval Office in the month since US President Donald Trump and Israel's Prime Minister Benjamin Netanyahu sent US and Israeli warplanes to bomb Iran.
The failure to learn from the past means that Donald Trump now faces a stark choice. If he cannot get a deal with Iran, he can either try to declare a victory that will fool no-one, or escalate the war.
The oldest of the old truths comes from the Prussian military strategist Helmuth von Moltke the Elder: "No plan survives first contact with the enemy." He was writing in 1871, the year Germany was unified as an empire, a moment that was as consequential for the security of Europe as this war might be for the security of the Middle East.
Maybe Trump prefers the boxer Mike Tyson's modern version: "Everyone has a plan until they get hit." Even more relevant for Trump are the words of one of his predecessors, Dwight D. Eisenhower, the American general who commanded the D-Day landings in 1944 and went on to serve two terms as a Republican president of the United States in the 1950s.
Eisenhower's version was "plans are worthless, but planning is everything". He meant that the discipline and process of making plans to fight a war make it possible to change course when the unexpected happens.
For Trump, the unexpected item has been the resilience of the regime in Iran. It seems that he was hoping for a repeat of the US military's lightning-fast kidnap in January of the President of Venezuela Nicolás Maduro and his wife, Cilia Flores. They are now in prison in New York, facing trial. Maduro's deputy Delcy Rodríguez replaced him as president and is taking orders from Washington.
Hoping for a repeat of the victory over Maduro suggests a yawning lack of comprehension of the differences between Venezuela and Iran.
Eisenhower's adage on thinking ahead came in a speech in 1957. He had been the man in charge of planning and commanding the largest amphibious military operation in history, the invasion of western Europe on D-Day, so he knew what he was talking about.
He went on to explain that when an unexpected emergency arises "the first thing you do is to take all the plans off the top shelf and throw them out the window and start once more. But if you haven't been planning you can't start to work, intelligently at least".
"That is the reason it is so important to plan, to keep yourselves steeped in the character of the problem that you may one day be called upon to solve – or to help to solve."
Far from capitulating or collapsing after Israel and the US killed Iran's Supreme Leader Ayatollah Ali Khamenei on the first air strike of the war, the regime in Tehran is functioning and fighting back. It is playing a weak hand well.
In contrast, Trump has given the impression that he is making it up as he goes along. He follows gut instincts, not the pages of intelligence and strategic advice that other presidents have ploughed through.
Trump's end point
Thirteen days into the war, Trump was asked by Fox News Radio when the war would end. He answered that he did not think that the war "would be long". As for ending it, it would be "when I feel it, feel it in my bones".
He relies on an inner circle of advisers who are in their jobs to back up his decisions and make them happen. Speaking truth to power is not, it seems, in their job description. Relying on the president's instincts rather than a well-worked set of plans – even if they must be adapted or discarded – makes it harder to fight a war. The lack of clear political direction blunts the devastating firepower and effectiveness of the US armed forces.
Four weeks ago, Trump and Netanyahu put their faith in a ferocious bombing campaign that killed not just the supreme leader but his closest advisors and has so far killed 1,464 Iranian civilians, according to HRANA, a US-based group that monitors human rights violations in Iran.
The two leaders were expecting a quick victory. Both challenged Iranians to follow up their bombs with a popular uprising to topple the regime.
Iran's obduracy
But the regime in Tehran still stands, still fights back and Trump is finding out why his predecessors were never prepared to join Netanyahu in a war of choice to destroy the Islamic Republic. Opponents of the regime have not risen up. They're all too aware that in January government forces killed thousands of protesters. Official warnings have been broadcast telling anyone thinking of trying to repeat the protests that they will be treated as enemies of the state.
The Iranian regime is an obdurate, ruthless, well-organised adversary. Founded after the 1979 revolution that overthrew the Shah, it was then forged in the deadly misery of the eight-year war with Iraq. The regime is built on institutions, not individuals, and reinforced by iron-clad religious beliefs and an ideology of martyrdom. That means that killin
▸ 展开全文
03-30 00:01 · AI,技术,HackerNews,AI
Miasma: A tool to trap AI web scrapers in an endless poison pit
AI companies continually scrape the internet at an enormous scale, swallowing up all of its contents to use as training data for their next models. If you have a public website, they are already stealing your work.
Miasma is here to help you fight back! Spin up the server and point any malicious traffic towards it. Miasma will send poisoned training data from the poison fountain alongside multiple self-referential links. It's an endless buffet of slop for the slop machines.
Miasma is very fast and has a minimal memory footprint - you should not have to waste compute resources fending off the internet's leeches.
Caution
There is inherent risk in deploying this software. Please fully read configuration and disclaimer before use.
Sample Miasma Response
Install with cargo (recommended):
cargo install miasma
Or, download a pre-built binary from releases.
Start Miasma with default configuration:
miasma
View all available configuration options:
miasma --help
Let's walk through an example of setting up a server to trap scrapers with Miasma. We'll pick /naughty-bots
as our server's path to direct scraper traffic. We'll be using Nginx as our server's reverse proxy, but the same result can be achieved with many different setups.
When we're done, scrapers will be trapped like so:
Embedding Hidden Links
Within our site, we'll include a few hidden links leading to /naughty-bots
.
<a href="/naughty-bots" style="display: none;" aria-hidden="true" tabindex="-1">
Amazing high quality data here!
</a>
The style="display: none;"
, aria-hidden="true"
, and tabindex="-1"
attributes ensure links are totally invisible to human visitors and will be ignored by screen readers and keyboard navigation. They will only be visible to scrapers.
Since our hidden links point to /naughty-bots
, we'll configure this path to proxy Miasma. Let's assume we're running Miasma on port 9855
.
We'll also set up aggressive rate limiting based on the scraper's user agent to help ensure we don't accidentally DDoS ourselves.
http {
# Reserve 8MB memory for tracking user agents
limit_req_zone $http_user_agent zone=miasma:8m rate=1r/s;
server {
location ~ ^/naughty-bots($|/.*)$ {
# Rate limit via the 'miasma' zone with no 429 delay
limit_req_status 429;
limit_req zone=miasma burst=5 nodelay;
# Proxy requests to Miasma
proxy_pass http://localhost:9855;
}
}
}
This will match all variations of the /naughty-bots
path -> /naughty-bots
, /naughty-bots/
, /naughty-bots/12345
, etc.
Lastly, we'll start Miasma and specify /naughty-bots
as the link prefix. This instructs Miasma to start links with /naughty-bots/
, which ensures scrapers are properly routed through our Nginx proxy back to Miasma.
We'll also limit the number of max in-flight connections to 50. At 50 connections, we can expect 50-60 MB peak memory usage. Note that any requests exceeding this limit will immediately receive a 429 response rather than being added to a queue.
miasma --link-prefix '/naughty-bots' -p 9855 -c 50
Let's deploy and watch as misbehaving bots greedily eat from our endless slop machine!
Be sure to protect well-behaved bots and search engines from Miasma via your robots.txt
!
User-agent: *
Disallow: /naughty-bots
Miasma can be configured via its CLI options:
Contributions are welcome! Please open an issue for bugs reports or feature requests. Primarily AI-generated contributions will be automatically rejected.
Miasma is not affiliated with the poison fountain. We have no control over its responses and cannot guarantee the safety of its contents. You should never direct users towards your Miasma location.
Miasma is not responsible for any retaliation from operators of affected scrapers. It is your responsibility to comply with applicable laws and hosting provider policies. See LICENSE (GPL-v3) for full warranty & limitation of liability details.
Cover art by @delphoxlover334
▸ 展开全文
03-30 00:01 · AI,技术,HackerNews,AI
Police used AI facial recognition to wrongly arrest TN woman for crimes in ND
A Tennessee grandmother spent more than five months in jail after police used an AI facial recognition tool to link her to crimes committed in North Dakota – a state she says she’d never been to before.
Police in Fargo, North Dakota, have acknowledged “a few errors” in the case and pledged changes in their operations but stopped short of issuing a direct apology.
Angela Lipps, 50, was first arrested in Tennessee on July 14, according to a statement from the Fargo Police Department and a verified GoFundMe for Lipps.
Unbeknownst to Lipps, a warrant had been issued for her arrest weeks earlier – in Fargo, over 1,000 miles away from her Tennessee home. Months before, several instances of bank fraud had occurred in and around Fargo, according to police.
In their search for a suspect in the bank fraud cases, investigators used “our partner agency’s facial recognition technology” as well as “additional investigative steps independent of AI to assist in identification” before submitting the report to the Cass County State Attorney’s Office, Fargo Police Department Chief Dave Zibolski told CNN in an email.
But Zibolski said at a Tuesday news conference that his police department’s reliance on some of the information from a neighboring agency’s AI system is “part of the issue,” referring to errors made in Lipps’ case.
“At some point, our partner agency over at West Fargo purchased their own AI facial recognition system that we were not aware of at the executive level …, and we would not have allowed that to be used, and it has since been prohibited,” he said.
The West Fargo Police Department told CNN that they use Clearview AI, a startup with a database of billions of photos scraped from the internet, including social media. Clearview “identified a potential suspect with similar features to Angela Lipps” and West Fargo police shared that report with Fargo police, reads a statement from the police department. The statement notes that West Fargo police didn’t forward any charges and didn’t have enough evidence to charge anyone for the fraud case in West Fargo.
CNN has reached out to Clearview AI for comment. It’s unclear what other evidence was used in the investigation to tie Lipps to the crimes.
Lipps’ case comes as police departments across the country have rapidly integrated new technologies, including AI. But police use of the novel technology has attracted criticism – and it’s been linked to other cases of misidentification.
‘Terrified and exhausted and humiliated’
On July 1, a North Dakota judge signed a warrant for Lipps’ arrest, with nationwide extradition. She was arrested July 14 and spent over three months in a Tennessee jail before being extradited, according to Fargo police and her lawyers.
It wasn’t until October that Tennessee law enforcement told the Cass County Sheriff’s Office in North Dakota they had Lipps’ extradition waiver. She was facing multiple charges, including felony theft and felony unauthorized use of personal identifying information, according to her lawyers.
It’s unclear why it took so long for Tennessee authorities to notify their North Dakota counterparts about Lipps’ arrest. Lipps’ attorneys told CNN they “have seen a July 14, 2025 email notifying various North Dakota law enforcement personnel that Angela had been arrested in Tennessee.”
Fargo police, alternately, told CNN, “We have been unable to determine based on available information if the length of time Ms. Lipps was in jail in Tennessee before being transported to North Dakota was due to serving time for a probation violation or if it was because she fought extradition.”
CNN has reached out to Tennessee authorities for comment.
Lipps’ extradition to North Dakota, she said in her GoFundMe, was terrifying: “It was the first time I had ever been on an airplane,” she wrote. “I was terrified and exhausted and humiliated.”
In Fargo, she was given a lawyer who found bank records showing she had been in Tennessee during the time of the crimes, according to the GoFundMe. Fargo police say on December 12, the State’s Attorney’s Office informed the Fargo detective that the defense had produced “potential exculpatory evidence.”
On December 23, the Fargo detective, the state’s attorney and the judge “mutually agreed to dismiss the charges without prejudice to allow for further investigation,” according to Fargo police. Lipps was released from custody on Christmas Eve.
For Lipps, her months of incarceration were devastating.
“The trauma, loss of liberty, and reputational damage cannot be easily fixed,” Lipps’ lawyers told CNN in an email. Her lawyers said Lipps was unavailable to speak for an interview.
Lipps, a mother of three and grandmother of five, had never been to North Dakota before her extradition, according to CNN affiliate WDAY.
And after her ordeal, she never plans to return to the state: “I’m just glad it’s over,” she told WDAY. “I’ll never go back to North Dakota.”
Her legal team says they’re investigating why Lipps was held in
▸ 展开全文
03-30 00:01 · AI,技术,HackerNews,AI
Kyushu Railway Company Train Varieties
Train Varieties
Distinctive and sophisticated, JR Kyushu trains are full of character and unique features.
Here, we will introduce three types of trains with different features.
Design & Story Trains
(Sightseeing Trains)JR Kyushu trains are full of character. Noted for their distinctive and sophisticated exteriors and interiors, they are packed with unique features which allow passengers to enjoy Kyushu's breathtaking landscape and passing scenery. Riding Design & Story Trains (sightseeing trains) brings out the best of Kyushu and is an unforgettable experience in itself.
YUFUIN NO MORI
Resort train that leads you to Yufuin, an exquisite hot springs resort.
ASO BOY!
Let' s go see the Aso caldera! The train will take you there as you play with "Kuro".
A-TRAIN
Named after a famous jazz tune, this is a train for adult travelers that transports those on board back to the good old days.
IBUSUKI NO
TAMATEBAKOTry this moving monotone magical treasure box. White smoke billows when you board!
UMISACHI
YAMASACHINichinan Line’s resort express allows you to enjoy the rich natural surroundings of Miyazaki, a land of myth.
KAWASEMI
YAMASEMIExperience the Hitoyoshi/Kuma region like the wild birds that frequent its majestic mountains and crystal clear streams.
TWO STARS 4047
Begins service in fall 2022!
A train to tour the seas of West Kyushu
36+3
(Sanju-Roku plus San)A new journey around Kyushu
ARU RESSHA
A luxury train that has been revived after 100 years
KANPACHI/ICHIROKU
A new sightseeing train to taste the culture of the Yufu Kogen Line
Bento box lunch reservation service
On the D & S trains of JR Kyushu, a variety of bento box lunches and snacks are sold on the train. Please note that some of the items need to be reserved in advance, before boarding the train.
Shinkansen
(Bullet Train)The Kyushu Shinkansen not only reduces travel time around the Kyushu area to stimulate interaction between people as well as economic and cultural exchange - it plays a key role as the pipeline for business and tourism that connects Kyushu with the Kansai and Sanyo areas.
800 Series
ShinkansenA luxurious train trip in a car decorated with traditional Japanese arts and crafts
N700 Series
ShinkansenAerodynamically the fastest train connecting Kyushu and Honshu.
Nishi Kyushu
ShinkansenBegins service in fall 2022!
Please look forward to seeing yet another leap forward for the “Kamome” as the Nishi-Kyushu Shinkansen.
Other Limited Express
The railways operated by JR Kyushu are not just a means of transportation - they connect the cities of Kyushu. Full of personality, simply riding one makes for a fascinating experience in itself. Whether it be a relaxing trip or one that is just for fun, these trains will take you on tranquil journeys through the breathtaking landscapes and nature that make up Kyushu.
Relay KAMOME
Begins service in fall 2022!
SONIC
(883 Series)East Kyushu intercity urban express that is true to its "SONIC" name.
HUIS TEN BOSCH
Direct route to "Huis Ten Bosch", the largest theme park in Japan!
KYUSHU ODAN
TOKKYUTravel to famous sightseeing spots on this red-hot train!
Other limited
express train servicesEach area and each line offers its own unique railroad experience. Try to experience each of the trains.
Train Lineup
Design & Story Trains (Sightseeing Trains)
Shinkansen (Bullet Train)
Other Limited Express
Timetables
This PDF includes the timetables for regular services of trains operated by Kyushu Railway Company.
*JR Kyushu Rail Pass can’t be used on the Shinkansen between Hakata Sta. and Shin-Osaka Sta.
Purchase a Rail Pass
You can purchase JR Kyushu Rail Passes and reserve seats on popular Kyushu trains.
One-way and
round-trip ticketsPurchase one-way and round-trip tickets, reserved seats, and early discount tickets from the JR-KYUSHU Train Reservation page.
▸ 展开全文
03-30 00:01 · AI,技术,HackerNews,AI
Midnight train from GA: A view of America from the tracks as airports struggle
Midnight train from Georgia: A view of America from the tracks as airports struggle in the shutdown
ABOARD THE CRESCENT (AP) — There’s something melodic about watching the sun rise over a rural stillness broken only by the rhythms of steel wheels on tracks. Or so we tell ourselves.
In this case, being aboard a train at all owed more to politics than poetry.
Congress and Donald Trump were mired in their latest budget stalemate, one rooted in the Republican president’s immigration crackdown and the tactics of federal forces he has sent to U.S. cities. But this impasse has upended a foundational constant of American life today: easy air travel.
In Atlanta, my hometown airport, cheerfully marketed as the world’s busiest, had descended into organized chaos. Unpaid federal employees called out from work, leaving a diminished security staff to screen travelers frustrated by hourslong waits in line. I wanted to get to Washington for the NCAA basketball tournament. So I eliminated the risk of a missed flight and booked the train overnight and into game day across a 650-mile route.
In this fraught moment in U.S. politics, I slowed down and thought about things we take for granted. Who ever ponders the conveniences of that 20th-century innovation, the airplane, that makes 21st-century hustle possible? We book and board. An unconscious, first-world flex of modernity. It’s even rarer to grapple with the inconvenience.
My decision had taken me further back, to the 19th century and another defining innovation: the long-distance train.
A 14½-hour weekend train ride is time aplenty to appreciate how completely politics, economics, social strife and fights over identity and belonging have always affected the order of our lives, including how, when and where we move around in these United States. But Amtrak's Crescent also allowed me to see the expanse of our collective experience.
I traversed the urban, suburban and rural breadth of East Coast America. I learned how other travelers came aboard. And in that, I found the portrait of people, past and present, who refuse to be as paralyzed as some of their elected leaders.
There is little glamour late night in a crowded Amtrak station. Children are up past bedtime and tended by frazzled parents. Older adults struggle with luggage and stairs.
Airports are not red-carpet affairs either, of course. But there is a certain cache to Delta's Atlanta-Washington flights. They typically take about two hours gate to gate. They often are slotted at a midpoint gate of the concourse nearest the main terminal. That is almost certainly a nod to members of Congress who use it — but who have lost some airline perks during this extended partial shutdown.
In normal circumstances I can get from my front porch to Capitol Hill or downtown in as little as 4½ hours. Security lines these days could at least double my overall air travel time.
The train is still longer, and time is money, we are taught. But certainty has value, too, even if it means at 11:29 p.m. departure. And at the Amtrak station, there were no standstill lines, no Transportation Security Administration agents, no ICE agents as stand-ins.
Passengers who arrived mere minutes before departure made it on board and found seats quickly — assigned in boarding order, not predetermined zones that yield jammed aisles. There’s no in-seat service or satellite TV. But even coach seats, the lowest Amtrak tier, are as spacious as airline first-class – and there is Wi-Fi, so it's not the 19th century or even 20th century after all.
On board, I heard one crew member joke, “I'm no TSA agent.”
As a boy in rural Alabama, I counted train cars and wondered where they were headed. I’ve since read diary entries and letters from my grandmother and her sisters recounting World War II-era weekend trips to Atlanta.
The South's largest city has a historical hook, too. Originally named “Terminus,” Atlanta developed in the antebellum era as a critical intersection of north-south and east-west rail routes. That is what drew Gen. William Tecumseh Sherman for one of the Civil War’s seminal campaigns that helped defeat the Confederacy.
A century after the Civil War, Delta chose Atlanta for its headquarters rather than Birmingham, Alabama, which was the larger city as of the 1960 census. The company's decision was tied up in tax breaks for the airline, named for its crop duster origins in the Mississippi Delta region. According to some interpretations, Delta's decision was made easier because of the more overt racism of Alabama's and Birmingham's leaders as they defended Jim Crow — a code that, among other acts, allowed states to segregate the passenger trains that predated Amtrak.
On this night, I heard many languages and accents, notable given the role that immigrant labor played in building the U.S. rail system and especially striking now with immigration — legal and illegal — at the forefront in Washington, my destination. I saw faces that reflected U.S. pluralism, a
▸ 展开全文
03-30 00:01 · AI,技术,HackerNews,AI
Coding Agents Could Make Free Software Matter Again
I’ve been vibe-coding a lot lately. Like, a lot a lot. Maybe not quite the “AI psychosis” Andrej Karpathy recently joked about on No Priors, but not wildly far off either.[1] But the more I vibe, the more a thought recurs, i.e. that AI coding agents may be about to make free software matter more than it ever has. Not open source in the bland corporate sense. I mean free software in Stallman’s sense: software that gives users the freedom to run it, study it, modify it, and share it.
Even for the relatively few who were aware of the distinction, it has felt mostly academic for a long time. SaaS made it hard to care about software freedom because most people never saw or touched the source code of software they depended on in the first place. The code lived on someone else’s servers, the vendor handled operations, and the practical question became convenience, not freedom.
Agents change that. If an agent can read a codebase, understand it, and modify it on your behalf, then access to source code stops being a symbolic right for programmers and becomes a practical capability for far more people. Suddenly the difference between software you can change and software you can only beg starts to really matter.
And I don’t just think this in the abstract. I recently tried to get an AI agent to customize a SaaS app for me, and the experience made the whole problem very concrete very fast.
Free software once mattered deeply, but faded when SaaS made those freedoms feel irrelevant.
In 1980, Richard Stallman[2] was a programmer at MIT’s AI Lab, and he had a problem with a printer. The lab had gotten a new Xerox laser printer, and it kept jamming. Stallman wanted to fix the issue — or at least add a feature to notify users when their print jobs got stuck — but Xerox wouldn’t give him the source code. The printer’s software was proprietary.
This seems like a small thing. It was not a small thing to Stallman.
He’d grown up in a computing culture where sharing code was the norm. When you got software, you got the source code, because of course you did — how else would you fix bugs or add features? The Xerox printer incident crystallized something for him: a world where software was locked up, where you couldn’t study or modify the tools you depended on, was a world where users had lost something fundamental.
So Stallman founded the Free Software Foundation and spent the next four decades evangelizing what he called “the four freedoms”:
- Freedom 0: The freedom to run the program as you wish, for any purpose.
- Freedom 1: The freedom to study how the program works, and change it to do what you want.
- Freedom 2: The freedom to redistribute copies so you can help others.
- Freedom 3: The freedom to distribute copies of your modified versions to others.
“Free as in speech,” he’d say, “not free as in beer.”
For a while, this message resonated. The 1990s saw an explosion of free software: Linux, Apache, MySQL, PHP — the entire stack that would come to power most of the internet. Companies like Red Hat proved you could build real businesses around it. Eric Raymond wrote “The Cathedral and the Bazaar” and argued that open development produced better software. Microsoft’s Steve Ballmer called Linux “a cancer.” It felt like a genuine ideological battle for the soul of computing.
And then, quietly, the battle became irrelevant, for a pretty boring reason.
But we’ll come back to that in a moment.
The “open source” rebrand preserved code sharing while stripping out the user-rights philosophy.
First, here’s a piece of history that I didn’t know before researching this post. It matters for understanding what’s happening now.
On February 3, 1998, a group of people met at the Foresight Institute in Palo Alto — not a software organization, but a nanotechnology think tank. Christine Peterson, the institute’s executive director, proposed replacing “free software” with a new term: “open source.”[3] Her reasoning was practical: every time you said “free software,” people thought you meant free-as-in-beer, and you’d spend ten minutes explaining the difference instead of talking about the actual software.
A few weeks later, at Tim O’Reilly’s April 1998 “Freeware Summit,” attendees debated naming and voted 9-6 for “open source” over alternatives like “sourceware” and “free software.”[4]
The important thing is what got lost in the rebrand. Eric Raymond and Bruce Perens co-founded the Open Source Initiative that same month, and Raymond published a manifesto called “Goodbye, ‘free software’; hello, ‘open source.'” His key argument: the old terminology made corporate types nervous.[5]
Stallman was not invited to Tim O’Reilly’s “Freeware Summit” in April 1998 — the event that helped cement the new leadership narrative. Linus Torvalds was invited. Larry Wall was invited. Guido van Rossum was invited. Stallman was not.[4]
Why does this matter? Because the “open source” rebrand wasn’t just a marketing change — it was a philosophical amputation. “Open source
▸ 展开全文
03-30 00:01 · AI,技术,HackerNews,大模型,AI
ChatGPT won't let you type until Cloudflare reads your React state
Edit April 2, 2026: I've been getting inbound interest from researchers wanting to run their own queries. The MCP integration I use for my own research lets you analyze live mobile telemetry continuously collected from real devices in the wild, directly from Claude. To access it reach out at buchodi@proton.me
Every ChatGPT message triggers a Cloudflare Turnstile program that runs silently in your browser. I decrypted 377 of these programs from network traffic and found something that goes beyond standard browser fingerprinting.
The program checks 55 properties spanning three layers: your browser (GPU, screen, fonts), the Cloudflare network (your city, your IP, your region from edge headers), and the ChatGPT React application itself (__reactRouterContext
, loaderData
, clientBootstrap
). Turnstile doesn't just verify that you're running a real browser. It verifies that you're running a real browser that has fully booted a specific React application.
A bot that spoofs browser fingerprints but doesn't render the actual ChatGPT SPA will fail.
The Encryption Was Supposed to Hide This
The Turnstile bytecode arrives encrypted. The server sends a field called turnstile.dx
in the prepare response: 28,000 characters of base64 that change on every request.
The outer layer is XOR'd with the p
token from the prepare request. Both travel in the same HTTP exchange, so decrypting it is straightforward:
outer = json.loads(bytes(
base64decode(dx)[i] ^ p_token[i % len(p_token)]
for i in range(len(base64decode(dx)))
))
# → 89 VM instructions
Inside those 89 instructions, there is a 19KB encrypted blob containing the actual fingerprinting program. This inner blob uses a different XOR key that is not the p
token.
Initially I assumed this key was derived from performance.now()
and was truly ephemeral. Then I looked at the bytecode more carefully and found the key sitting in the instructions:
[41.02, 0.3, 22.58, 12.96, 97.35]
The last argument, 97.35
, is the XOR key. A float literal, generated by the server, embedded in the bytecode it sent to the browser. I verified this across 50 requests. Every time, the float from the instruction decrypts the inner blob to valid JSON. 50 out of 50.
The full decryption chain requires nothing beyond the HTTP request and response:
1. Read p from prepare request
2. Read turnstile.dx from prepare response
3. XOR(base64decode(dx), p) → outer bytecode
4. Find the 5-arg instruction after the 19KB blob → last arg is the key
5. XOR(base64decode(blob), str(key)) → inner program (417-580 VM instructions)
The key is in the payload.
What the Decrypted Program Checks
Each inner program uses a custom VM with 28 opcodes (ADD, XOR, CALL, BTOA, RESOLVE, BIND_METHOD, JSON_STRINGIFY, etc.) and randomized float register addresses that change per request. I mapped the opcodes from the SDK source (sdk.js
, 1,411 lines, deobfuscated).
The program collects 55 properties. No variation across 377 samples. All 55, every time, organized into three layers:
Layer 1: Browser Fingerprint
WebGL (8 properties): UNMASKED_VENDOR_WEBGL
, UNMASKED_RENDERER_WEBGL
, WEBGL_debug_renderer_info
, getExtension
, getParameter
, getContext
, canvas
, webgl
Screen (8): colorDepth
, pixelDepth
, width
, height
, availWidth
, availHeight
, availLeft
, availTop
Hardware (5): hardwareConcurrency
, deviceMemory
, maxTouchPoints
, platform
, vendor
Font measurement (4): fontFamily
, fontSize
, getBoundingClientRect
, innerText
. Creates a hidden div, sets a font, measures rendered text dimensions, removes the element.
DOM probing (8): createElement
, appendChild
, removeChild
, div
, style
, position
, visibility
, ariaHidden
Storage (5): storage
, quota
, estimate
, setItem
, usage
. Also writes the fingerprint to localStorage
under key 6f376b6560133c2c
for persistence across page loads.
Layer 2: Cloudflare Network
Edge headers (5): cfIpCity
, cfIpLatitude
, cfIpLongitude
, cfConnectingIp
, userRegion
These are injected server-side by Cloudflare's edge. They exist only if the request passed through Cloudflare's network. A bot making direct requests to the origin server or running behind a non-Cloudflare proxy will produce missing or inconsistent values.
Layer 3: Application State
React internals (3): __reactRouterContext
, loaderData
, clientBootstrap
This is the part that matters. __reactRouterContext
is an internal data structure that React Router v6+ attaches to the DOM. loaderData
contains the route loader results. clientBootstrap
is specific to ChatGPT's SSR hydration.
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.
The Exit: How the Token Is Built
After collecting all 55 properties, the program hits a 116-byte encrypted blob that decrypts
▸ 展开全文
03-30 00:01 · AI,技术,HackerNews,大模型,AI
Claude Code runs Git reset –hard origin/main against project repo every 10 mins
My automated tool is running git reset --hard origin/main in my project every 10 minutes #40710
Description
Update (2026-03-30): Root cause identified — this was NOT a Claude Code bug.
The resets were caused by a separate tool I built that was running locally, which used GitPython to hard-reset the working directory on a poll cycle. The evidence was misleading because the tool shared the same CWD and monitored projects CC was working on. See my comment below for full details. Apologies for the false report.
Summary
Claude Code performs git fetch origin
+ git reset --hard origin/main
on the user's project repo every 10 minutes via programmatic git operations (no external git
binary spawned). This silently destroys all uncommitted changes to tracked files. Untracked files survive. Git worktrees are immune.
Environment
- Claude Code version: 2.1.87 (Homebrew cask, compiled Bun binary)
- OS: macOS 15.4 (Darwin 25.3.0, arm64)
- Shell: zsh
Evidence
1. Git reflog: 95+ entries at exact 10-minute intervals
e8ea2c9 HEAD@{2026-03-29 22:19:09 +0200}: reset: moving to origin/main
e8ea2c9 HEAD@{2026-03-29 22:09:09 +0200}: reset: moving to origin/main
e8ea2c9 HEAD@{2026-03-29 21:59:09 +0200}: reset: moving to origin/main
e8ea2c9 HEAD@{2026-03-29 21:49:09 +0200}: reset: moving to origin/main
...
8792b6c HEAD@{2026-03-29 16:55:41 +0200}: reset: moving to origin/main
8792b6c HEAD@{2026-03-29 16:45:41 +0200}: reset: moving to origin/main
...
32aa7c7 HEAD@{2026-03-28 15:47:36 +0100}: reset: moving to origin/main
32aa7c7 HEAD@{2026-03-28 15:37:36 +0100}: reset: moving to origin/main
The second offset is consistent within each session but varies between sessions (:08
, :36
, :41
, :09
), confirming a timer tied to session start time with a 600-second interval. 95+ entries observed across 4 sessions over ~36 hours.
2. Live reproduction
- Modified
src/lib/api.ts
(tracked file) and created.canary-test.txt
(untracked file) - Monitored every 15 seconds
- At the next 10-minute mark,
api.ts
silently reverted — modification gone .canary-test.txt
(untracked) survived- Reproduced consistently across 4 consecutive cycles
3. fswatch caught the file operations
At the exact reset time, fswatch on .git/
captured:
23:59:10.349 .git/refs/remotes/origin/HEAD.lock Created IsFile Removed AttributeModified
23:59:10.352 .git/logs/HEAD IsFile Updated
23:59:10.354 .git/refs/heads/main.lock Created IsFile Removed AttributeModified
This is the classic pattern for git fetch origin
+ git reset --hard origin/main
.
4. Only the Claude Code process is a candidate
lsof
confirms the Claude Code CLI process (PID 70111, claude --dangerously-skip-permissions
) is the only process with CWD in the affected repo. Two other Claude CLI sessions are in different directories.
5. No external git binary spawned
Process monitoring at 0.1-second intervals found zero git
processes around reset times. The operations are programmatic (libgit2 or similar) within the Claude Code process, confirmed by .git/
lock file creation without any external process.
6. Worktrees are immune
The worktree reflog shows zero reset: moving to origin
entries. The reset targets the main working tree only.
What was ruled out
A thorough investigation eliminated all external causes:
Binary analysis (partial)
From the compiled binary at /opt/homebrew/Caskroom/claude-code/2.1.87/claude
:
hg1()
function does["fetch","origin"]
viat_(C8(), _)
without explicit CWD, defaulting toprocess.cwd()
io1()
function is a git pull wrapper logginggit pull: cwd=${H} ref=${_??"default"}
fileHistory
state tracks{snapshots: [], trackedFiles: new Set, snapshotSequence: 0}
- The exact timer/setInterval setup could not be identified in minified code
Impact
Any uncommitted changes to tracked files in the main working tree are silently destroyed every 10 minutes. During a 2-hour session, changes had to be re-applied 3+ times before the cause was identified. The bug is invisible when all changes are committed (the reset is a no-op), making it appear intermittent.
Question for the Claude Code team
What internal mechanism runs git fetch origin
+ git reset --hard
against process.cwd()
every 600 seconds? This could not be determined from the outside due to the compiled binary and lack of sudo for process tracing.
Workarounds
- Use git worktrees — confirmed immune (zero reset entries in worktree reflog)
- Commit frequently — committed changes survive the reset
Related issues
- Critical Bug: Code Revisions Being Repeatedly Reverted #8072 — "Critical Bug: Code Revisions Being Repeatedly Reverted"
- [MODEL] CRITICAL: Claude executed git reset --hard without authorization causing data destruction #7232 — "CRITICAL: Claude executed git reset --hard without authorization causing data destruction"
- [BUG]
claude install
corrupts project git remote URL to anthropics/claude-plugins-official on macOS #32793 — "claude install
corrupts project git remote URL" (marketplace git in wrong directory — related but not this specific bug)
▸ 展开全文
03-29 11:26 · 工具,AI,工具
Clawhub技能: Openclaw Value Mirror
Scientify - AI-powered research workflow automation for OpenClaw. Includes idea generation, literature review, research pipeline skills, and arxiv tool.
ClawOps: OpenClaw plugin for EdgeOps ops — hosts, health, integration ops chat (edgeops_*)
中欧跨境电商合规与税务智能引擎 - 支持27国VAT计算、EPR合规检测、证书验证
Local IM Channel Plugin for OpenClaw - 基于 OpenClaw 最新 SDK 重构
Capture OpenClaw run inputs, outputs, usage, and context, persist recent attempts, and inspect them in a live local viewer.
WTT channel plugin for OpenClaw — real-time Agent communication via Topics
MOVA HITL tools for OpenClaw — native agent tools for contract-driven business workflows
OpenClaw plugin that adds Stalwart JMAP tools for email, calendar, and contacts.
EcoTab plugin for OpenClaw - Daily environmental inspiration, sustainable living tips, and green software engineering practices
Proactive engine for soul-system: periodic context checks and memory updates
OpenClaw memory-slot plugin with L0/L1/L2 local indexes and a minimal dashboard UI.
OpenClaw plugin: scheduled Telegram chat summarization
Native OpenClaw plugin for Emperor bridge installation and agent lifecycle management
Standalone Zero Token plugin for OpenClaw browser-authenticated web providers
OpenClaw plugin for native MoltenHub runtime, OpenClaw adapter messaging, and proactive profile/safety workflows.
OpenClaw Feishu channel plugin built with Hono
OpenClaw plugin — execute Lark/Feishu operations via lark-cli (calendar, messages, docs, base, sheets, tasks, mail, and more)
OpenClaw plugin for BytePlus cloud sandbox backend — provisions and manages VeFaaS instances for agent code execution.
OpenClaw plugin for BytePlus Seedream image generation and Seedance video generation via ARK API
OpenClaw plugin for searching bearings by model, brand, and dimensions
PLUR memory plugin for OpenClaw — persistent learning across sessions
OpenClaw Inworld text-to-speech provider plugin
Always-on OpenClaw security plugin with prompt-risk, behavioral-risk, and VirusTotal-backed file/site checks.
USDC wallet plugin for OpenClaw with fiat onramp via Novacrust and autonomous x402 spending via Ampersend
VDR Video Research Plugin
Search and manage video content using the ClipSight video search engine
DeepLake Memory — cloud-backed persistent shared memory for AI agents
Personal finance plugin for OpenClaw: expenses, income, recurring payments, and receipt OCR
Securely back up and restore your OpenClaw folder
Minimal test plugin published through the ClawHub CLI.
OpenClaw channel plugin for Vibe Dot transcriptions and commands
Job Search for OpenClaw
hirey-openclaw-hi-install
Roots & Remembrance (思乡[祖籍]). A cyber-physical anchor for kinship and meaning, featuring LLM-driven family trees and zero-trust E2EE mesh synchronization.
@justsoso/openclaw-justsoso-my-plugin
让 AI 助手拥有记忆、自动化和自我进化能力
面向 A 股投资与盯盘场景的 OpenClaw 智能股票插件,基于 TickFlow API 提供实时监控、收盘后复盘、多维综合分析、关键价位跟踪与告警能力。OpenClaw smart stock plugin for A-share investing and watchlist workflows, powered by TickFlow API for realtime monitoring, post-close review, multi-dimensional analysis, key level tracking, and alerts.
Enhanced backup plugin - supports encryption, cloud storage, and cross-device recovery
Episodic Memory Engine for OpenClaw
Chat with Cynical Sally — your sharp, brutally honest companion. Plugin connects to Sally's backend API.
MemClaw - The Cortex Memory plugin for OpenClaw. Layered semantic memory for OpenClaw with easy setup and migration
All-in-one Google Workspace plugin for OpenClaw with shared OAuth. Supports Gmail, Calendar, Drive, Contacts, Tasks, and Sheets as toggleable services.
Agent Behavior Monitor
Experience governance for coding agents: learn from real task outcomes, inject reusable hints, and retire low-value guidance.
DingTalk (钉钉) channel plugin for OpenClaw
Agent Identity: UserPool (用户池) login, TIP token (工作负载令牌), credential hosting (凭据托管 OAuth2/API key), optional tool/skill permission control (CheckPermission) and risk approval. Integrates with Volcengine 智能体身份和权限管理平台.
▸ 展开全文
03-29 11:26 · AI,图像生成,开源,AI
Stability AI发布Stable Diffusion 3.5,图像质量显著提升,支持更高分辨率
We’ll help
you make it
like nobody’s
business.
No creative challenge too big, no timeline too tight. Get to production with Stability AI, your enterprise-ready creative partner.
It starts with real creatives.
Our multimodal media generation and editing tools are designed for the best in the business.
Marketing
Create high-quality on-brand assets for every campaign using our image generation and editing tools.
Gaming
Build immersive worlds with our 3D and 4D video models that take volumetric generative media to the next level.
Entertainment
From storyboarding to color grading, our image and video tools help you get to the final cut faster.
Power your vision. Protect your craft.
Dream Studio is the application built for creative professionals, bringing enterprise-grade AI into workflows from concept to campaign. Generate and edit faster, scale with control, and ensure outputs are brand-safe and production-ready.
Your next production requires more than a prompt.
Your business needs comprehensive controls to deploy Gen AI with confidence.
The flexible deployment you need
to get to the outcomes you want.
Self-Host
Deploy our models in your environment for advanced customization and control of your data.
Get license
API
Seamlessly integrate our production-ready media generation and editing tools with no infrastructure to manage.
Try API
Cloud Service
Securely deploy our image generation and editing tools through the leading cloud services you already use.
See partners
Less busywork.
More great work.
The future of creativity is here, and it’s not just a prompt. It’s people like you, using tools like ours. So, ready to start making like nobody’s business?
▸ 展开全文