πŸ’»Interstitial

This page describes how to solve Datadome Interstitial ("Verifying your device")

Datadome Interstitial Workflow

This guide walks you through solving a Datadome Interstitial challenge using our API. Follow the steps exactly to construct valid requests and extract the necessary cookie.


🧱 Step 1: Trigger a Block

Make a GET request to a page that is known to be protected by Datadome. If blocked, you’ll receive a 403 Forbidden response containing HTML similar to:

htmlCopyEdit<html>
  <head>
    <title>thefork.it</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':'AHrlqAAAAAMA33U5jz_3dWIAH38V_A==',
        'hsh':'4980A61279181687DE605B235F81B9',
        'b':1362300,
        's':2906,
        'host':'geo.captcha-delivery.com'
      }
    </script>
    <script data-cfasync="false" src="https://ct.captcha-delivery.com/i.js"></script>
  </body>
</html>

You know you are blocked by Interstitial by the presence of https://ct.captcha-delivery.com/i.js in the HTML


πŸ”— Step 2: Construct Device Check URL

Extract the following values from the dd JavaScript object in the block page:

  • cid

  • hsh

  • b

  • s

  • host

  • The original request referer (URL-encoded)

Then build a full device check link, like so:

Ensure your referer matches the URL you attempted to access.

Here is a Golang implementation of how to build the link:


πŸ“„ Step 3: Fetch and Encode the Page

Do a GET request to the constructed device check link. Base64-encode the full HTML response body. This encoded string will become the payload for the next step.


πŸ”§ Step 4: Solve Using Our API

Send the Base64-encoded HTML payload to our API endpoint to solve the interstitial challenge.

See API Reference

πŸ“€ Step 5: Submit the Payload

Send a POST request to:

Headers

Use HTTP/1.1 and include these headers (values must match real Chrome browser headers):

Body

The payload returned from our API is the body of the HTTP POST to /interstitial. It contains the application/x-www-form-urlencoded data. Submit it as is - no need to change anything.


βœ… Step 5: Handle the API Response

A successful POST returns a JSON response like this:

What to do:

  • Extract the datadome cookie

  • Add it to your cookie jar for the target domain

  • Retry the original blocked request using the cookie

You should now be able to access the page without being blocked.

Last updated