Skip to main content

How to Launch CookieRobot using Python

CookieRobot makes your profiles look more legit by automatically collecting cookies from your chosen websites – no manual crawling needed! In this guide, we’ll walk you through how to use it to streamline the process.

Python Code Application

In this example, settings are configured in the payload object, inside the run_script() function:

  • CookieRobot will be running through the file cookie_robot.py.
  • The profile IDs being processed are ced16576-a67b-4ae5-8459-c07991d50f27.
    • (Note: The second profile ID ec0cf95f-b199-4b1c-b394-af1e01ac9c09 is commented out in the provided code example.)
  • The profile ced16576-a67b-4ae5-8459-c07991d50f27 will run in non-headless mode.
  • The websites are Yahoo.com and Amazon.com, and they will be visited in a random order.
  • Since fractionMode is set to 1, 100% of the websites listed will be visited.
  • CookieRobot will automatically accept cookie consent notices if they appear.
tip

For the script to authenticate successfully, you need a file named token in your project root directory containing your Indigo authorization token.

import logging
import requests
import json

# In project root you need a file called token with your auth token in there
def setup_logging():
"""Set up logging configuration."""
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s",
handlers=[
logging.FileHandler("script_runner.log"),
logging.StreamHandler()
]
)

def get_token_from_file():
"""Read the token from a file called 'token' in the project root."""
try:
with open("token", "r") as file:
token = file.read().strip()
return token
except FileNotFoundError:
logging.error("Token file not found in the project root.")
raise
except Exception as e:
logging.error("An error occurred while reading the token file: %s", str(e))
raise

def run_script():
url = "https://launcher.indigobrowser.com:45011/api/v1"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {get_token_from_file()}"
}

payload = {
"script_file": "cookie_robot.py",
"profile_ids": [
{
"profile_id": "ced16576-a67b-4ae5-8459-c07991d50f27",
"is_headless": False
},
# {
# "profile_id": "ec0cf95f-b199-4b1c-b394-af1e01ac9c09",
# "is_headless": False
# },

],
"script_params": [
{
"name": "websites",
"value": ["yahoo.com", "amazon.com"]
},
{
"name": "randomOrder",
"value": True
},
{
"name": "fractionMode",
"value": 1
},
{
"name": "processCookieConsent",
"value": True
}
]
}
try:
logging.info("Payload to send: %s", json.dumps(payload, indent=4))
logging.info("Sending request to the script runner endpoint...")
response = requests.post(url, headers=headers, data=json.dumps(payload), timeout=30)

if response.status_code == 200:
logging.info("Script executed successfully.")
logging.info("Response: %s", response.json())
else:
logging.error("Failed to execute script. Status code: %d", response.status_code)
logging.error("Response: %s", response.text)
except requests.exceptions.RequestException as e:
logging.error("An error occurred while making the request: %s", str(e))

if __name__ == "__main__":
setup_logging()
run_script()