Getting started
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
Slider
Parsing the HTML
Fetching the slider script
Fetching the slider puzzle
Fetching the payload from API
Posting payload, solving challenge
Complete Example
Last updated

