mirror of
https://github.com/CloakHQ/CloakBrowser.git
synced 2026-06-23 11:41:46 +02:00
Parse user:pass from proxy URLs into separate Playwright username/password fields. Puppeteer wrapper strips credentials from --proxy-server and auto-calls page.authenticate(). Bump Python 0.1.6, JS 0.1.3.
43 lines
1.0 KiB
TypeScript
43 lines
1.0 KiB
TypeScript
/**
|
|
* Shared proxy URL parsing for Playwright and Puppeteer wrappers.
|
|
*/
|
|
|
|
export interface ParsedProxy {
|
|
server: string;
|
|
username?: string;
|
|
password?: string;
|
|
}
|
|
|
|
/**
|
|
* Parse a proxy URL, extracting credentials into separate fields.
|
|
*
|
|
* Handles: "http://user:pass@host:port" -> { server: "http://host:port", username: "user", password: "pass" }
|
|
* Also handles: no credentials, URL-encoded special chars, socks5://, missing port.
|
|
*/
|
|
export function parseProxyUrl(proxy: string): ParsedProxy {
|
|
let url: URL;
|
|
try {
|
|
url = new URL(proxy);
|
|
} catch {
|
|
// Not a parseable URL (e.g. bare "host:port") — pass through as-is
|
|
return { server: proxy };
|
|
}
|
|
|
|
if (!url.username) {
|
|
return { server: proxy };
|
|
}
|
|
|
|
// Rebuild server URL without credentials
|
|
const server = `${url.protocol}//${url.hostname}${url.port ? `:${url.port}` : ""}`;
|
|
|
|
const result: ParsedProxy = {
|
|
server,
|
|
username: decodeURIComponent(url.username),
|
|
};
|
|
if (url.password) {
|
|
result.password = decodeURIComponent(url.password);
|
|
}
|
|
|
|
return result;
|
|
}
|