import type { WebContents } from 'electron'; import ContentSecurityPolicy = Session.ContentSecurityPolicy; export const cloudflareSiteCsp: ContentSecurityPolicy = { 'style-src': ['cdnjs.cloudflare.com'], 'script-src': ['hcaptcha.com'], }; export function humanInteractionRequired(webContents: WebContents): Promise { return webContents.executeJavaScript( "[...document.querySelectorAll('iframe')].map(iframe => (new URL(iframe.src)).hostname.match(/hcaptcha/)).some(e => e)" ) as Promise; } export function isCloudFlareSite(webContents: WebContents): Promise { return webContents.executeJavaScript( "!!document.querySelector('.cf-browser-verification, #cf-content')" ) as Promise; }