Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ulixee
GitHub Repository: ulixee/secret-agent
Path: blob/main/mitm/handlers/BlockHandler.ts
1030 views
1
import IMitmRequestContext from '../interfaces/IMitmRequestContext';
2
import ResourceState from '../interfaces/ResourceState';
3
4
export default class BlockHandler {
5
public static shouldBlockRequest(ctx: IMitmRequestContext): boolean {
6
ctx.setState(ResourceState.BlockHandler);
7
const requestSession = ctx.requestSession;
8
if (!requestSession) return false;
9
if (requestSession.isClosing) return false;
10
11
const shouldBlock =
12
(ctx.resourceType && requestSession.blockedResources?.types?.includes(ctx.resourceType)) ||
13
requestSession.shouldBlockRequest(ctx.url.href);
14
15
if (!shouldBlock) return false;
16
ctx.didBlockResource = shouldBlock;
17
18
let contentType = 'text/html';
19
if (ctx.resourceType === 'Image') {
20
contentType = `image/${ctx.url.pathname.split('.').pop()}`;
21
}
22
23
if (ctx.proxyToClientResponse) {
24
if (requestSession.blockHandler(ctx)) {
25
return true;
26
}
27
28
ctx.proxyToClientResponse.writeHead(200, {
29
'Content-Type': contentType,
30
'Access-Control-Allow-Origin': '*',
31
});
32
ctx.proxyToClientResponse.end('');
33
}
34
// don't proceed
35
return true;
36
}
37
}
38
39