20 lines
742 B
TypeScript
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>;
|
|
}
|