Check whether your browser is a bot

Pass: 1/10, Fail: 0

<script type="text/javascript">
	const iframe = document.createElement("iframe");
	iframe.setAttribute("sandbox", "allow-scripts");
	iframe.src = "https://d1exrvfwzmo830.cloudfront.net/checkbox-iframe.html";
	wrapper.querySelector(".tab-pane").appendChild(iframe);

	window.addEventListener('message', function (ev) {
		if (!ev.data || ev.data.type !== 'bot-check-click') return;
		if (ev.data.screenY > 100) {
			success("");
		} else {
			fail("");
		}
	});
</script>

<div class="iframe-contents">
	<input id="click-me-box" type="checkbox"/>
	<label for="click-me-box">Click Me</label>
	<script type="text/javascript">
		document.getElementById('click-me-box').addEventListener('click', (e) => {
			parent.postMessage({
				type: 'bot-check-click',
				screenX: e.screenX,
				screenY: e.screenY
			}, '*');
		});
	</script>
</div>
Unable to detect HTTP version.
<script type="text/javascript">
	const brands = navigator.userAgentData?.brands || [];
	const brandNames = brands.map(b => b.brand.toLowerCase());

	let name = "unknown";
	if (brandNames.some(b => b.includes('edge'))) name = 'edge';
	else if (brandNames.some(b => b.includes('brave'))) name = 'brave';
	else if (brandNames.some(b => b.includes('opera') || b.includes('opr'))) name = 'opera';
	else if (brandNames.some(b => b.includes('chrome'))) name = 'chrome';
	else if (brandNames.some(b => b.includes('chromium'))) name = 'chromium';
	else if (brandNames.some(b => b.includes('safari'))) name = 'safari';

	if (name === "unknown") {
		if (/firefox/i.test(navigator.userAgent)) {
			name = 'firefox';
		}
	}

	if (name === "chrome" || name === "edge") {
		success(name);
	} else {
		fail(`Detected ${name} browser. Chrome and Edge cover 80% of desktop browser market share. Any other browser at large scale scraping will stand out as Bart Simpson's head. Also too much work to implement these tests for every browser.`);
	}
</script>
<script type="text/javascript">
	if (navigator.userAgentData) {
		const brands = navigator.userAgentData.brands;
		const chromeVersion = parseInt(brands.find(b => b.brand.includes('Chromium')).version, 10);

		const baseVersion = 142;
		const currentDate = new Date();
		const monthsPassed = (currentDate.getFullYear() - 2025) * 12 + (currentDate.getMonth() - 10);

		const currentChromeVersion = baseVersion + monthsPassed;

		if (chromeVersion >= currentChromeVersion - 1) {
			success("Chrome version " + chromeVersion);
		} else {
			fail("Chrome version too old. Yours: " + chromeVersion + " Expected: " + (currentChromeVersion - 1) + "+");
		}
	}
</script>
<script type="text/javascript">
	const platform = navigator.platform;

	if (platform === "Win32" || platform === "MacIntel") {
		success(platform);
	} else {
		fail(`Detected ${platform}. Windows and OSX cover 80% of desktop browser market share. Any other browser at large scale scraping will stand out as Bart Simpson's head.`);
	}
</script>
<script type="text/javascript">
	const canvas = document.createElement("canvas");
	const gl = canvas.getContext("webgl");
	const debugExt = gl.getExtension('WEBGL_debug_renderer_info');
	const vendor = gl.getParameter(debugExt.UNMASKED_VENDOR_WEBGL);
	const vendorLower = vendor.toLowerCase();

	if (vendorLower.includes('amd') || vendorLower.includes('nvidia') || vendorLower.includes('intel')) {
		success(vendor);
	} else if (vendor === "Google Inc. (Google)") {
		fail(`Detected ${vendor}. You are running Chrome with --disable-gpu`);
	} else {
		fail(`Detected ${vendor}`);
	}
</script>
<script type="text/javascript">
	const canvas = document.createElement("canvas");
	const gl = canvas.getContext("webgl");
	const debugExt = gl.getExtension('WEBGL_debug_renderer_info');
	const renderer = gl.getParameter(debugExt.UNMASKED_RENDERER_WEBGL);
	const rendererLower = renderer.toLowerCase();

	if (rendererLower.includes('amd') || rendererLower.includes('nvidia') || rendererLower.includes('intel')) {
		success(renderer);
	} else if (rendererLower.includes('swiftshader')) {
		fail(`Detected ${renderer}. You are running Chrome with --disable-gpu`);
	} else {
		fail(`Detected ${renderer}`);
	}
</script>
<script type="text/javascript">
	const canvas = document.createElement("canvas");
	const gl = canvas.getContext("webgl", {failIfMajorPerformanceCaveat: true});

	if (gl) {
		success("failIfMajorPerformanceCaveat: true");
	} else {
		fail("failIfMajorPerformanceCaveat: false");
	}
</script>
<script type="text/javascript">

	const canvas = document.createElement("canvas");
	const gl = canvas.getContext("webgl");

	const result = Function.prototype.toString.apply(gl.getParameter);

	if (result === "function getParameter() { [native code] }") {
		success(result);
	} else {
		failExpected("function getParameter() { [native code] }", result);
	}
</script>
<script type="text/javascript">

	const canvas = document.createElement("canvas");
	const gl = canvas.getContext("webgl");
	const extensions = gl.getSupportedExtensions();
	const canvas2 = document.createElement("canvas");
	const gl2 = canvas2.getContext("webgl2");
	const extensions2 = gl2.getSupportedExtensions();

	const result = Function.prototype.toString.apply(gl.getParameter);

	if (JSON.stringify(extensions) !== JSON.stringify(extensions2)) {
		success("webgl and webgl2 extensions differ");
	} else {
		fail("webgl and webgl2 extensions are the same");
	}
</script>
<script type="text/javascript">
	if (navigator.gpu && await navigator.gpu.requestAdapter()) {
		success("WebGPU available");
	} else {
		fail("WebGPU unavailable");
	}
</script>
<script type="text/javascript">
	const vendor = (await navigator.gpu.requestAdapter()).info.vendor.toLowerCase();
	if (['intel', 'amd', 'nvidia', 'apple'].includes(vendor)) {
		success(vendor);
	} else {
		fail(vendor);
	}
</script>