RenaiApp/src/main/modules/cloudflare/cloudflare-util.ts

20 lines
742 B
TypeScript

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<boolean> {
return webContents.executeJavaScript(
"[...document.querySelectorAll('iframe')].map(iframe => (new URL(iframe.src)).hostname.match(/hcaptcha/)).some(e => e)"
) as Promise<boolean>;
}
export function isCloudFlareSite(webContents: WebContents): Promise<boolean> {
return webContents.executeJavaScript(
"!!document.querySelector('.cf-browser-verification, #cf-content')"
) as Promise<boolean>;
}