Interstitial
This page explains the flow of solving both the interstitial and slider challenge of DataDome.
Interstitial
<html>
<head>
<title>example.com</title>
<style>#cmsg{animation: A 1.5s;}@keyframes A{0%{opacity:0;}99%{opacity:0;}100%{opacity:1;}}</style>
</head>
<body style="margin:0">
<p id="cmsg">Please enable JS and disable any ad blocker</p>
<script data-cfasync="false">var dd={'rt':'i','cid':'AHrlqAAAAAMACAOLE2sBBRMATaDxmw==','hsh':'13C44BAB3C9D728ABD66E2A9F0233C','b':1501854,'s':48047,'host':'geo.captcha-delivery.com'}</script><script data-cfasync="false" src="https://ct.captcha-delivery.com/i.js"></script>
</body>
</html>Parsing the HTML
// reader is an `io.Reader` which holds the response body of the HTML.
// datadomeCookie is the cookie value of the cookie with name "datadome",
// this cookie is set by the 403 block page.
// referer is the URL that served the 403 block page.
deviceLink, err := datadome.ParseInterstitialDeviceCheckLink(reader, datadomeCookie, referer)
if err != nil {
// Handle the error
}
// deviceLink will look like: https://geo.captcha-delivery.com/interstitial/?...from hyper_sdk.datadome import parse_interstitial_device_check_link
device_link = parse_interstitial_device_check_link(html_content, datadome_cookie, referer)
# device_link will look like: https://geo.captcha-delivery.com/interstitial/?...import parseInterstitialDeviceCheckUrl from "hyper-sdk-js/datadome/interstitial.js";
const deviceCheckUrl = parseInterstitialDeviceCheckUrl(
"", // Block page body
"", // Value of `datadome` cookie
"" // Referer, e.g. URL you are trying to access
);
if (deviceCheckUrl === null) {
// deviceCheckUrl will be null if parseInterstitialDeviceCheckUrl failed to parse it.
}Fetching the interstitial script
Fetching the payload from API
Posting payload, solving challenge
Last updated

