Bots playground: information for bot developpers

This page enables bot developpers to easily get information about their bot:

  • HTTP headers
  • IP address and autonomous system
  • Geolocation
  • Browser fingerprint

If you develop crawlers, you frequently need to check information about their fingerprint. Indeed, many websites use information related to HTTP headers, IP address and browser fingerprinting to block bots. Thus, you want to ensure your bot won't be detected because you've forgotten to remove navigator.webdriver = true from its fingerprint. To check this information you could run a server locally and collect a fingerprint, but you can't always do it.

On this page, you can access information about your bot fingerprint in 2 forms:

  • Visually: Fingerprinting information is displayed so that you can take a screenshot with your bot;
  • Programmatically: the fingerprint is stored in window.fingerprint.

Accessing your fingerprint programmatically

In each example, the fingerprint is stored in the variable called fingerprint.

Puppeteer and Headless Chrome
const puppeteer = require('puppeteer'); 
(async () => {
   const browser = await puppeteer.launch()
   const page = await browser.newPage()
   await page.goto('https://device-info.fr/bots_playground');
   await page.waitFor(() => {
      return typeof window.fingerprint !== 'undefined';
   });
   const fingerprint = await page.evaluate(() => {
      return window.fingerprint;
   })
 
  console.log(fingerprint);
 
  await browser.close()
})()

Playwright and Headless Chrome, Headless Firefox, Headless WebKit
const playwright = require('playwright'); 
(async () => {
   // Replace by 'firefox' or 'webkit'
   const browser = await playwright['chromium'].launch();
   const context = await browser.newContext();
   const page = await context.newPage();
   await page.goto('https://device-info.fr/bots_playground');
 
   await page.waitForFunction(() => {
       return typeof window.fingerprint !== 'undefined';
   });
 
   const fingerprint = await page.evaluate(() => {
       return window.fingerprint;
   })
 
   console.log(fingerprint);
   await browser.close();
})();

Selenium and Chrome, Firefox, Safari
require('chromedriver');const webdriver = require('selenium-webdriver');
 
(async () => {
   const driver = new webdriver.Builder()
       .forBrowser('chrome')
       .build();
 
   await driver.get('https://device-info.fr/bots_playground');
 
   await driver.wait(async() => {
       return driver.executeScript(() => {
           return typeof window.fingerprint !== 'undefined'; 
       })
   });
 
   const fingerprint = await driver.executeScript(async () => {
       return window.fingerprint;
   });
    
   console.log(fingerprint);
   await driver.close();
})();

IP address

Your IP address is 3.238.112.198 Autonomous system/ISP: AMAZON-AES Country: United States

HTTP headers

List of your HTTP headers. For better accuracy, we display the raw headers, i.e. the headers as received by the server. They may differ from the ones shown in your developper tools or on other websites. The reason they may differ is that the devtools may apply transformation on the name of the headers (upper/lower case). The same thing can occur when a website is behind a load balancer or a CDN like Cloudflare, Akamai. The headers are displayed in the order received and with their case.

HeaderValue
Connectionupgrade
Hostdeviceandbrowserinfo.com
X-Forwarded-For3.238.112.198
User-AgentCCBot/2.0 (https://commoncrawl.org/faq/)
Accepttext/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Languageen-US,en;q=0.5
Accept-Encodingbr,gzip

Device information

AttributeValueDescription