rensan-browser 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +1 -1
- package/dist/browser.js.map +1 -1
- package/dist/captcha.d.ts +20 -0
- package/dist/captcha.d.ts.map +1 -0
- package/dist/captcha.js +172 -0
- package/dist/captcha.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/session.d.ts +16 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +19 -1
- package/dist/session.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAQzD,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAQzD,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,MAAM,CAA6E;gBAE/E,MAAM,EAAE,YAAY;IAM1B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAKvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;;;;;;OAOG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAOpC;;;;;;OAMG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAMhE;;;;;;;;;;;;;;OAcG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAIzE;;;;;;;;;;OAUG;IACG,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAQ/D"}
|
package/dist/browser.js
CHANGED
|
@@ -40,7 +40,7 @@ class RensanBrowser {
|
|
|
40
40
|
await this.launch();
|
|
41
41
|
const ctx = await this.browser.newContext({ viewport: { width: 1280, height: 800 } });
|
|
42
42
|
const page = await ctx.newPage();
|
|
43
|
-
return new session_1.Session(page, this.config.apiKey, this.config.model, this.config.timeout);
|
|
43
|
+
return new session_1.Session(page, this.config.apiKey, this.config.model, this.config.timeout, this.config.twocaptchaKey);
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
46
|
* Open a session and navigate to a URL in one step.
|
package/dist/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2CAAoD;AACpD,uCAAoC;AAGpC,MAAM,QAAQ,GAAG;IACf,KAAK,EAAK,kBAAkB;IAC5B,QAAQ,EAAE,IAAI;IACd,OAAO,EAAG,KAAK;CAChB,CAAC;AAEF,MAAa,aAAa;IAIxB,YAAY,MAAoB;QAHxB,YAAO,GAAmB,IAAI,CAAC;QAIrC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;IAC3C,CAAC;IAED,gFAAgF;IAEhF,KAAK,CAAC,MAAM;QACV,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,MAAM,qBAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,gFAAgF;IAEhF;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,GAAG,GAAI,MAAM,IAAI,CAAC,OAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACxF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;QACjC,OAAO,IAAI,iBAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2CAAoD;AACpD,uCAAoC;AAGpC,MAAM,QAAQ,GAAG;IACf,KAAK,EAAK,kBAAkB;IAC5B,QAAQ,EAAE,IAAI;IACd,OAAO,EAAG,KAAK;CAChB,CAAC;AAEF,MAAa,aAAa;IAIxB,YAAY,MAAoB;QAHxB,YAAO,GAAmB,IAAI,CAAC;QAIrC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;IAC3C,CAAC;IAED,gFAAgF;IAEhF,KAAK,CAAC,MAAM;QACV,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,MAAM,qBAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,gFAAgF;IAEhF;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,GAAG,GAAI,MAAM,IAAI,CAAC,OAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACxF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;QACjC,OAAO,IAAI,iBAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAClH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,OAAqB;QAC3C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,QAAQ,CAAC,IAAc,EAAE,OAAqB;QAClD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,GAAG,CAAI,EAAoC;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;gBAAS,CAAC;YACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;CACF;AAxFD,sCAwFC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* captcha.ts
|
|
3
|
+
* Detect and solve captchas in a Playwright page.
|
|
4
|
+
*
|
|
5
|
+
* Supported:
|
|
6
|
+
* - Image/text captchas → Claude vision reads characters
|
|
7
|
+
* - reCaptcha v2 → 2captcha API (requires twocaptchaKey)
|
|
8
|
+
* - hCaptcha → 2captcha API (requires twocaptchaKey)
|
|
9
|
+
* - Cloudflare challenge → wait for auto-resolve
|
|
10
|
+
*/
|
|
11
|
+
import type { Page } from 'playwright';
|
|
12
|
+
import type { AIClient } from './ai';
|
|
13
|
+
export type CaptchaType = 'recaptcha' | 'hcaptcha' | 'cloudflare' | 'image' | 'none';
|
|
14
|
+
export interface CaptchaResult {
|
|
15
|
+
detected: boolean;
|
|
16
|
+
solved: boolean;
|
|
17
|
+
type: CaptchaType;
|
|
18
|
+
}
|
|
19
|
+
export declare function handleCaptcha(page: Page, ai: AIClient, twocaptchaKey?: string): Promise<CaptchaResult>;
|
|
20
|
+
//# sourceMappingURL=captcha.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captcha.d.ts","sourceRoot":"","sources":["../src/captcha.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM,CAAC;AAErF,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;CACnB;AA2JD,wBAAsB,aAAa,CACjC,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,QAAQ,EACZ,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,aAAa,CAAC,CAoBxB"}
|
package/dist/captcha.js
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* captcha.ts
|
|
4
|
+
* Detect and solve captchas in a Playwright page.
|
|
5
|
+
*
|
|
6
|
+
* Supported:
|
|
7
|
+
* - Image/text captchas → Claude vision reads characters
|
|
8
|
+
* - reCaptcha v2 → 2captcha API (requires twocaptchaKey)
|
|
9
|
+
* - hCaptcha → 2captcha API (requires twocaptchaKey)
|
|
10
|
+
* - Cloudflare challenge → wait for auto-resolve
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.handleCaptcha = handleCaptcha;
|
|
14
|
+
async function detectType(page) {
|
|
15
|
+
try {
|
|
16
|
+
return await page.evaluate(() => {
|
|
17
|
+
if (document.querySelector('iframe[src*="recaptcha"]') ||
|
|
18
|
+
document.querySelector('.g-recaptcha') ||
|
|
19
|
+
document.querySelector('[data-callback][data-sitekey]'))
|
|
20
|
+
return 'recaptcha';
|
|
21
|
+
if (document.querySelector('iframe[src*="hcaptcha"]') ||
|
|
22
|
+
document.querySelector('.h-captcha'))
|
|
23
|
+
return 'hcaptcha';
|
|
24
|
+
if (document.querySelector('#cf-challenge-running') ||
|
|
25
|
+
document.querySelector('.cf-browser-verification') ||
|
|
26
|
+
document.querySelector('#challenge-running') ||
|
|
27
|
+
(document.title ?? '').toLowerCase().includes('just a moment'))
|
|
28
|
+
return 'cloudflare';
|
|
29
|
+
const body = document.body?.innerHTML?.toLowerCase() ?? '';
|
|
30
|
+
const hasImageCaptcha = !!(document.querySelector('img[src*="captcha"]') ||
|
|
31
|
+
document.querySelector('input[name*="captcha"]') ||
|
|
32
|
+
document.querySelector('[id*="captcha"]') ||
|
|
33
|
+
document.querySelector('[class*="captcha"]'));
|
|
34
|
+
if (hasImageCaptcha && body.includes('captcha'))
|
|
35
|
+
return 'image';
|
|
36
|
+
return 'none';
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return 'none';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async function solveImageCaptcha(page, ai) {
|
|
44
|
+
try {
|
|
45
|
+
// Screenshot the whole page and let Claude find + solve the captcha
|
|
46
|
+
const buf = await page.screenshot({ type: 'jpeg', quality: 70 });
|
|
47
|
+
const b64 = buf.toString('base64');
|
|
48
|
+
// Ask Claude to read the captcha text
|
|
49
|
+
const answer = await ai.read(b64, 'There is a CAPTCHA on this page. Read the distorted characters and reply ONLY with those characters, nothing else. No punctuation.', page.url());
|
|
50
|
+
const captchaText = answer.trim().replace(/\s+/g, '');
|
|
51
|
+
if (!captchaText || captchaText.length < 3 || captchaText.length > 12)
|
|
52
|
+
return false;
|
|
53
|
+
// Find the input field
|
|
54
|
+
const inputSel = await page.evaluate(() => {
|
|
55
|
+
const candidates = [
|
|
56
|
+
'input[name*="captcha"]',
|
|
57
|
+
'input[id*="captcha"]',
|
|
58
|
+
'input[placeholder*="captcha"]',
|
|
59
|
+
'input[type="text"][name*="code"]',
|
|
60
|
+
'input[autocomplete="off"][type="text"]',
|
|
61
|
+
];
|
|
62
|
+
for (const sel of candidates) {
|
|
63
|
+
const el = document.querySelector(sel);
|
|
64
|
+
if (el)
|
|
65
|
+
return sel;
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
});
|
|
69
|
+
if (!inputSel)
|
|
70
|
+
return false;
|
|
71
|
+
await page.locator(inputSel).fill(captchaText);
|
|
72
|
+
await page.waitForTimeout(300);
|
|
73
|
+
await page.keyboard.press('Enter');
|
|
74
|
+
await page.waitForTimeout(2000);
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async function solveWith2captcha(page, type, apiKey) {
|
|
82
|
+
try {
|
|
83
|
+
const siteKey = await page.evaluate((t) => {
|
|
84
|
+
const sel = t === 'hcaptcha'
|
|
85
|
+
? '.h-captcha, iframe[src*="hcaptcha"]'
|
|
86
|
+
: '.g-recaptcha, iframe[src*="recaptcha"]';
|
|
87
|
+
const el = document.querySelector(sel);
|
|
88
|
+
if (!el)
|
|
89
|
+
return null;
|
|
90
|
+
// data-sitekey on the wrapper div
|
|
91
|
+
if (el.dataset?.sitekey)
|
|
92
|
+
return el.dataset.sitekey;
|
|
93
|
+
// or src param in iframe
|
|
94
|
+
const iframe = el;
|
|
95
|
+
if (iframe.src) {
|
|
96
|
+
const m = iframe.src.match(/[?&]k=([^&]+)/);
|
|
97
|
+
if (m)
|
|
98
|
+
return m[1];
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}, type);
|
|
102
|
+
if (!siteKey)
|
|
103
|
+
return false;
|
|
104
|
+
const pageUrl = page.url();
|
|
105
|
+
const method = type === 'hcaptcha' ? 'hcaptcha' : 'userrecaptcha';
|
|
106
|
+
const paramKey = type === 'hcaptcha' ? 'sitekey' : 'googlekey';
|
|
107
|
+
// Submit captcha task
|
|
108
|
+
const inRes = await fetch(`https://2captcha.com/in.php?key=${apiKey}&method=${method}&${paramKey}=${siteKey}&pageurl=${encodeURIComponent(pageUrl)}&json=1`);
|
|
109
|
+
const inData = await inRes.json();
|
|
110
|
+
if (inData.status !== 1)
|
|
111
|
+
return false;
|
|
112
|
+
const taskId = inData.request;
|
|
113
|
+
// Poll every 5 s, max 90 s
|
|
114
|
+
for (let i = 0; i < 18; i++) {
|
|
115
|
+
await new Promise(r => setTimeout(r, 5000));
|
|
116
|
+
const resData = await fetch(`https://2captcha.com/res.php?key=${apiKey}&action=get&id=${taskId}&json=1`).then(r => r.json());
|
|
117
|
+
if (resData.status === 1) {
|
|
118
|
+
const token = resData.request;
|
|
119
|
+
// Inject token and trigger callback
|
|
120
|
+
await page.evaluate(({ tok, captchaType }) => {
|
|
121
|
+
const responseField = document.querySelector(captchaType === 'hcaptcha'
|
|
122
|
+
? 'textarea[name="h-captcha-response"]'
|
|
123
|
+
: '#g-recaptcha-response');
|
|
124
|
+
if (responseField) {
|
|
125
|
+
responseField.value = tok;
|
|
126
|
+
responseField.dispatchEvent(new Event('input'));
|
|
127
|
+
responseField.dispatchEvent(new Event('change'));
|
|
128
|
+
}
|
|
129
|
+
// Try to fire captcha callback
|
|
130
|
+
const w = window;
|
|
131
|
+
const cfg = w['___grecaptcha_cfg'];
|
|
132
|
+
if (cfg?.['clients']) {
|
|
133
|
+
const clients = cfg['clients'];
|
|
134
|
+
for (const client of Object.values(clients)) {
|
|
135
|
+
const cb = client['callback'];
|
|
136
|
+
if (typeof cb === 'function')
|
|
137
|
+
cb(tok);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}, { tok: token, captchaType: type });
|
|
141
|
+
await page.waitForTimeout(1500);
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
if (resData.request === 'ERROR_CAPTCHA_UNSOLVABLE')
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
async function handleCaptcha(page, ai, twocaptchaKey) {
|
|
154
|
+
const type = await detectType(page);
|
|
155
|
+
if (type === 'none')
|
|
156
|
+
return { detected: false, solved: false, type: 'none' };
|
|
157
|
+
let solved = false;
|
|
158
|
+
if (type === 'cloudflare') {
|
|
159
|
+
// Cloudflare usually auto-resolves with a real browser — just wait
|
|
160
|
+
await page.waitForTimeout(6000);
|
|
161
|
+
const still = await detectType(page);
|
|
162
|
+
solved = still === 'none';
|
|
163
|
+
}
|
|
164
|
+
else if ((type === 'recaptcha' || type === 'hcaptcha') && twocaptchaKey) {
|
|
165
|
+
solved = await solveWith2captcha(page, type, twocaptchaKey);
|
|
166
|
+
}
|
|
167
|
+
else if (type === 'image') {
|
|
168
|
+
solved = await solveImageCaptcha(page, ai);
|
|
169
|
+
}
|
|
170
|
+
return { detected: true, solved, type };
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=captcha.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captcha.js","sourceRoot":"","sources":["../src/captcha.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { RensanBrowser } from './browser';
|
|
2
2
|
export { Session } from './session';
|
|
3
3
|
export type { RensanConfig, CapturedRequest, GotoOptions, FillOptions, ScrollOptions, } from './types';
|
|
4
|
+
export type { CaptchaResult, CaptchaType } from './captcha';
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EACV,YAAY,EACZ,eAAe,EACf,WAAW,EACX,WAAW,EACX,aAAa,GACd,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EACV,YAAY,EACZ,eAAe,EACf,WAAW,EACX,WAAW,EACX,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/session.d.ts
CHANGED
|
@@ -14,13 +14,15 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import type { Page } from 'playwright';
|
|
16
16
|
import type { CapturedRequest, GotoOptions, FillOptions, ScrollOptions } from './types';
|
|
17
|
+
import type { CaptchaResult } from './captcha';
|
|
17
18
|
export declare class Session {
|
|
18
19
|
readonly page: Page;
|
|
19
20
|
private defaultTimeout;
|
|
20
21
|
private ai;
|
|
21
22
|
private interceptor;
|
|
23
|
+
private twocaptchaKey?;
|
|
22
24
|
currentUrl: string;
|
|
23
|
-
constructor(page: Page, apiKey: string, model: string, defaultTimeout: number);
|
|
25
|
+
constructor(page: Page, apiKey: string, model: string, defaultTimeout: number, twocaptchaKey?: string);
|
|
24
26
|
goto(url: string, options?: GotoOptions): Promise<void>;
|
|
25
27
|
wait(ms: number): Promise<void>;
|
|
26
28
|
screenshot(): Promise<string>;
|
|
@@ -83,6 +85,19 @@ export declare class Session {
|
|
|
83
85
|
* })
|
|
84
86
|
*/
|
|
85
87
|
capture(fn: () => Promise<void>): Promise<CapturedRequest[]>;
|
|
88
|
+
/**
|
|
89
|
+
* Detect and solve a captcha on the current page.
|
|
90
|
+
* - Image/text captchas: solved via Claude vision
|
|
91
|
+
* - reCaptcha v2 / hCaptcha: solved via 2captcha API (requires twocaptchaKey in RensanConfig)
|
|
92
|
+
* - Cloudflare challenge: waits for auto-resolve
|
|
93
|
+
*
|
|
94
|
+
* @returns CaptchaResult with detected/solved/type fields
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* const result = await session.solveCaptcha()
|
|
98
|
+
* if (result.detected && !result.solved) console.log('Captcha unsolvable:', result.type)
|
|
99
|
+
*/
|
|
100
|
+
solveCaptcha(): Promise<CaptchaResult>;
|
|
86
101
|
close(): Promise<void>;
|
|
87
102
|
}
|
|
88
103
|
//# sourceMappingURL=session.d.ts.map
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAgB/C,qBAAa,OAAO;IAOhB,QAAQ,CAAC,IAAI,EAAE,IAAI;IAGnB,OAAO,CAAC,cAAc;IATxB,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,UAAU,SAAM;gBAGL,IAAI,EAAE,IAAI,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACL,cAAc,EAAE,MAAM,EAC9B,aAAa,CAAC,EAAE,MAAM;IASlB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3D,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAOnC;;;;;;;OAOG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAkB7B,aAAa;IAuB3B;;;;;;;OAOG;IACG,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAuDpF;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlE;;;;;;;OAOG;IACG,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW1C;;;;OAIG;IACG,MAAM,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IASlF;;;;OAIG;IACG,MAAM,CAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAetE,YAAY,IAAI,IAAI;IAKpB,WAAW,IAAI,eAAe,EAAE;IAIhC,IAAI,gBAAgB,IAAI,eAAe,EAAE,CAExC;IAED;;;;;;;OAOG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAYlE;;;;;;;;;;;OAWG;IACG,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC;IAMtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
package/dist/session.js
CHANGED
|
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
exports.Session = void 0;
|
|
18
18
|
const ai_1 = require("./ai");
|
|
19
19
|
const interceptor_1 = require("./interceptor");
|
|
20
|
+
const captcha_1 = require("./captcha");
|
|
20
21
|
// Extra input selectors to try before vision
|
|
21
22
|
const FILL_SELECTORS = [
|
|
22
23
|
'input[type="search"]',
|
|
@@ -31,12 +32,13 @@ const FILL_SELECTORS = [
|
|
|
31
32
|
'textarea',
|
|
32
33
|
];
|
|
33
34
|
class Session {
|
|
34
|
-
constructor(page, apiKey, model, defaultTimeout) {
|
|
35
|
+
constructor(page, apiKey, model, defaultTimeout, twocaptchaKey) {
|
|
35
36
|
this.page = page;
|
|
36
37
|
this.defaultTimeout = defaultTimeout;
|
|
37
38
|
this.currentUrl = '';
|
|
38
39
|
this.ai = new ai_1.AIClient(apiKey, model);
|
|
39
40
|
this.interceptor = new interceptor_1.Interceptor(page);
|
|
41
|
+
this.twocaptchaKey = twocaptchaKey;
|
|
40
42
|
}
|
|
41
43
|
// ─── Navigation ─────────────────────────────────────────────────────────────
|
|
42
44
|
async goto(url, options = {}) {
|
|
@@ -255,6 +257,22 @@ class Session {
|
|
|
255
257
|
return this.stopCapture();
|
|
256
258
|
}
|
|
257
259
|
}
|
|
260
|
+
// ─── Captcha ─────────────────────────────────────────────────────────────────
|
|
261
|
+
/**
|
|
262
|
+
* Detect and solve a captcha on the current page.
|
|
263
|
+
* - Image/text captchas: solved via Claude vision
|
|
264
|
+
* - reCaptcha v2 / hCaptcha: solved via 2captcha API (requires twocaptchaKey in RensanConfig)
|
|
265
|
+
* - Cloudflare challenge: waits for auto-resolve
|
|
266
|
+
*
|
|
267
|
+
* @returns CaptchaResult with detected/solved/type fields
|
|
268
|
+
*
|
|
269
|
+
* @example
|
|
270
|
+
* const result = await session.solveCaptcha()
|
|
271
|
+
* if (result.detected && !result.solved) console.log('Captcha unsolvable:', result.type)
|
|
272
|
+
*/
|
|
273
|
+
async solveCaptcha() {
|
|
274
|
+
return (0, captcha_1.handleCaptcha)(this.page, this.ai, this.twocaptchaKey);
|
|
275
|
+
}
|
|
258
276
|
// ─── Lifecycle ───────────────────────────────────────────────────────────────
|
|
259
277
|
async close() {
|
|
260
278
|
await this.page.close().catch(() => { });
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAGH,6BAAgC;AAChC,+CAA4C;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -7,6 +7,12 @@ export interface RensanConfig {
|
|
|
7
7
|
headless?: boolean;
|
|
8
8
|
/** Default navigation timeout ms. Default: 25000 */
|
|
9
9
|
timeout?: number;
|
|
10
|
+
/**
|
|
11
|
+
* 2captcha.com API key.
|
|
12
|
+
* When provided, reCaptcha v2 and hCaptcha are solved automatically.
|
|
13
|
+
* Get one at https://2captcha.com
|
|
14
|
+
*/
|
|
15
|
+
twocaptchaKey?: string;
|
|
10
16
|
}
|
|
11
17
|
export interface GotoOptions {
|
|
12
18
|
waitUntil?: 'load' | 'domcontentloaded' | 'networkidle';
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,aAAa,CAAC;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAID,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb"}
|
package/package.json
CHANGED