Chrome 143 includes a long list of updates. This post focuses on the changes that are relevant to web scraping in a dynamic, browser-driven environment (the kinds of sites where you rely on Playwright, Puppeteer or Selenium to execute JavaScript, interact with the DOM and extract rendered content). If you’re using simple HTTP requests to scrape static pages these changes won’t affect you. But for anyone running large-scale automation or dealing with modern, JavaScript-heavy websites, a few of the updates in Chrome 143 are worth paying attention to.
Changes Relevant to Web Scraping
Allow more characters in JavaScript DOM API (DOM API relaxation)
Chrome 143 removes several long-standing inconsistencies between the HTML parser and the JavaScript DOM API. Historically, the HTML parser has allowed a broader range of element and attribute names than the DOM methods used to create or query those nodes. This meant that certain unusual but syntactically valid names (often produced by obfuscation tools or bot-resistant markup) could appear in a parsed document but could not be created, selected or manipulated via JavaScript without triggering errors. Chrome 143 aligns the DOM API’s name validation rules with the parser’s more permissive behaviour, ensuring that any element or attribute the browser can parse from HTML can also be accessed and constructed through JavaScript. This improves compatibility with non-standard markup patterns sometimes found on heavily scripted or anti-bot sites and reduces friction for scrapers that rely on JavaScript execution.
For example, using the novel tag name from the original issue, the following static HTML file worked fine with older versions of Chrome.
<!DOCTYPE html>
<html>
<body>
<h1>Static HTML Test</h1>
<emotion-😍>Making the DOM weird in new and exciting ways!</emotion-😍>
</body>
</html>
However, the dynamic equivalent below only works with the changes applied in Chrome 143.
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript DOM Test</h1>
<div id="output"></div>
<script>
const el = document.createElement("emotion-😍");
el.textContent = "Making the DOM weird in new and exciting ways!";
document.getElementById("output").appendChild(el);
</script>
</body>
</html>
Unicode Upgrade
The ICU (International Components for Unicode) library was upgraded. This will mostly have an impact on formatting in different locales.
For example, full-length weekdays are now followed by a comma when formatting dates in certain English locales.
new Intl.DateTimeFormat("en-GB", { dateStyle: "full" }).format(new Date("2011-04-30"))
'Saturday, 30 April 2011'
Whereas before this would be formatted as
'Saturday 30 April 2011'
If your scraper relies on a specific date format then you might need to update. Or use a library like dateparser.
The default formatting of numbers in the Italian locale no longer uses a thousand separator for 4 digit numbers.
new Intl.NumberFormat("it").format(1234)
1234
This really only does apply to 4 digit numbers though.
new Intl.NumberFormat("it").format(12345)
12.345
Changes Relevant to Browser Fingerprinting
Locale information can have high entropy for browser fingerprinting, so the ICU changes are relevant. Your browser and device might be misclassified until fingerprinting techniques are updated to take advantage of these changes, but then they will become yet another signal to differentiate your setup.
Summary
A couple of changes in Chrome 143 have meaningful implications for web scraping. The most important is the relaxation of character validation in the JavaScript DOM API, which brings them in line with the HTML parser and allows sites to create or query elements with previously disallowed characters. This improves scraper compatibility with modern, obfuscated or intentionally unconventional markup. The ICU Unicode library is also updated, which can subtly alter the formatting of dates and numbers. Scrapers that parse these strings or compare them against expected formats may need adjustments.