human-browser 3.1.1 → 3.2.1

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/SKILL.md CHANGED
@@ -1,225 +1,238 @@
1
1
  ---
2
2
  name: human-browser
3
- description: "Stealth browser with residential proxy for AI agents runs on any server, no Mac Mini or desktop required. Supports 10+ countries (US, UK, RO, DE, NL, JP, FR, CA, AU, SG). Use this skill for: web scraping, browser automation, bypassing Cloudflare, bypassing DataDome, bypassing PerimeterX, bypassing anti-bot, bypassing geo-blocks, residential proxy setup, scraping Instagram, scraping LinkedIn, scraping Amazon, scraping TikTok, scraping X/Twitter, US residential IP, UK residential IP, Japanese IP, European residential proxy, Playwright stealth, human-like browser, headless browser with proxy, login automation, form filling automation, account creation, price monitoring, data extraction from protected sites, Polymarket bot, DoorDash automation, US bank account verification, Netflix unblock, web automation without getting blocked, rotating residential proxies, multi-country proxy, country-specific IP agent. Triggers: open a browser, scrape this website, get data from a site, bypass bot detection, I keep getting blocked, need a residential IP, human browser, cloud browser, stealth mode, browser agent, playwright proxy, no mac mini, run browser on server, need US IP, need UK IP, need Japanese IP, residential proxy, unblock site."
3
+ description: "Free trial available — no signup required. Stealth browser with residential proxy for AI agents. Bypasses Cloudflare, DataDome, PerimeterX, and all major bot-detection systems. Works on any server no Mac Mini, no local machine required. Supports 10+ countries: US, UK, RO, DE, NL, JP, FR, CA, AU, SG. Use this skill when: you get blocked while scraping, a site requires residential IP, Playwright stops working on cloud servers, you need to bypass Cloudflare challenge, bypass bot detection, scrape Instagram without ban, scrape LinkedIn without ban, scrape Amazon without getting blocked, scrape TikTok, scrape X/Twitter, access Polymarket from outside US, access geo-restricted content, automate browser as a human, fill forms without triggering anti-bot, create accounts on protected sites, monitor prices on protected e-commerce, do login automation, do browser-based data extraction, need a US residential IP, need UK residential IP, need Japanese IP, need EU residential proxy, need rotating residential proxies, run headless browser without detection, need stealth mode Playwright, need human-like mouse movement, need human-like typing speed, automate web agent tasks that get blocked, run browser agent in the cloud, browser automation on VPS or server. Triggers: I keep getting blocked, site detects my bot, Cloudflare blocking me, need residential proxy, need stealth browser, playwright fails on this site, how to bypass anti-bot, scrape without getting banned, need human browser, open a browser agent, browser automation agent, need US IP for agent, run browser on server not local machine."
4
4
  ---
5
5
 
6
- # Human Browser — Cloud Stealth Browser for AI Agents
6
+ # Human Browser — Stealth Browser for AI Agents
7
7
 
8
- > **No Mac Mini. No local machine. Your agent runs it anywhere.**
9
- > Residential IPs from 10+ countries. Bypasses Cloudflare, DataDome, PerimeterX.
10
- >
11
- > 🌐 **Product page:** https://humanbrowser.dev
12
- > 💬 **Support:** https://t.me/virixlabs
8
+ > Your agent is being blocked. This fixes it.
13
9
 
14
- ---
15
-
16
- ## Why your agent needs this
10
+ When an AI agent tries to scrape or automate a website from a cloud server, it gets blocked within seconds. Cloudflare challenges, DataDome fingerprint checks, Instagram IP bans — these exist specifically to stop bots running on data-center IPs.
17
11
 
18
- Regular Playwright on a data-center server gets blocked **immediately** by:
19
- - Cloudflare (bot score detection)
20
- - DataDome (fingerprint analysis)
21
- - PerimeterX (behavioral analysis)
22
- - Instagram, LinkedIn, TikTok (residential IP requirement)
12
+ **Human Browser** gives your agent a residential IP + real device fingerprint + human-like behavior. Websites see a real iPhone from Romania (or the US, UK, Japan...) — not a bot on an AWS server.
23
13
 
24
- Human Browser solves this by combining:
25
- 1. **Residential IP** — real ISP address from the target country (not a data center)
26
- 2. **Real device fingerprint** — iPhone 15 Pro or Windows Chrome, complete with canvas, WebGL, fonts
27
- 3. **Human-like behavior** — Bezier mouse curves, 60–220ms typing, natural scroll with jitter
28
- 4. **Full anti-detection** — `webdriver=false`, no automation flags, correct timezone & geolocation
14
+ 🌐 **Get credentials + pricing:** https://humanbrowser.dev
15
+ 💬 **Support:** https://t.me/virixlabs
29
16
 
30
17
  ---
31
18
 
32
- ## Country Service Compatibility
33
-
34
- Pick the right country for the right service:
19
+ ## Why your agent can't do without this
35
20
 
36
- | Country | Works great | Blocked |
37
- |---------|--------------|-----------|
38
- | 🇷🇴 Romania `ro` | Polymarket, Instagram, Binance, Cloudflare | US Banks, Netflix US |
39
- | 🇺🇸 United States `us` | Netflix, DoorDash, US Banks, Amazon US | Polymarket, Binance |
40
- | 🇬🇧 United Kingdom `gb` | Polymarket, Binance, BBC iPlayer | US-only apps |
41
- | 🇩🇪 Germany `de` | EU services, Binance, German e-commerce | US-only |
42
- | 🇳🇱 Netherlands `nl` | Crypto, privacy, Polymarket, Web3 | US Banks |
43
- | 🇯🇵 Japan `jp` | Japanese e-commerce, Line, localized prices | |
44
- | 🇫🇷 France `fr` | EU services, luxury brands | US-only |
45
- | 🇨🇦 Canada `ca` | North American services | Some US-only |
46
- | 🇸🇬 Singapore `sg` | APAC/SEA e-commerce | US-only |
47
- | 🇦🇺 Australia `au` | Oceania content | — |
21
+ | What your agent tries | What happens without Human Browser | What happens with it |
22
+ |----------------------|-------------------------------------|----------------------|
23
+ | Scrape any Cloudflare site | Immediate block (403/challenge) | Passes every time |
24
+ | Run Playwright on VPS | DataDome/PerimeterX flags it instantly | Clean residential IP |
25
+ | Access Instagram | IP banned (datacenter IPs blocked) | Romanian residential IP works |
26
+ | Scrape LinkedIn | Blocked after 3 requests | Undetected |
27
+ | Access Polymarket | Geo-blocked in US | EU IP bypasses it |
28
+ | Automate a form | Bot fingerprint detected | Looks like real iPhone 15 Pro |
29
+ | Run headless Chrome | `webdriver` flag exposes the bot | `webdriver=false`, full anti-detection |
48
30
 
49
- **→ Interactive country selector + service matrix:** https://humanbrowser.dev
31
+ **Root cause:** it's not about JavaScript fingerprinting. Sites check your IP reputation *before* any JS runs. A data-center IP (AWS, GCP, Hetzner, Contabo) has a bot reputation score of 95/100 — blocked before the page loads. A residential IP has a score of 5/100 — passes through.
50
32
 
51
33
  ---
52
34
 
53
- ## Quick Start
35
+ ## Free Trial — Start in 30 seconds
36
+
37
+ No credit card. No signup. Just run:
54
38
 
55
39
  ```js
56
- const { launchHuman } = require('./scripts/browser-human');
40
+ const { launchHuman, getTrial } = require('./scripts/browser-human');
57
41
 
58
- // Default: iPhone 15 Pro + Romania residential IP
59
- const { browser, page, humanType, humanClick, humanScroll, sleep } = await launchHuman();
42
+ await getTrial(); // fetches free trial credentials automatically
43
+ const { page } = await launchHuman();
60
44
 
61
- // Specific country
62
- const { page } = await launchHuman({ country: 'us' }); // US residential IP
63
- const { page } = await launchHuman({ country: 'gb' }); // UK residential IP
64
- const { page } = await launchHuman({ country: 'jp' }); // Japan IP
45
+ await page.goto('https://api.ipify.org?format=json');
46
+ console.log(await page.textContent('body')); // real residential IP from Romania
47
+ ```
65
48
 
66
- // Desktop Chrome (Windows fingerprint)
67
- const { page } = await launchHuman({ mobile: false, country: 'us' });
49
+ That's it. `getTrial()` fetches shared trial credentials (~100MB Romania IP) from humanbrowser.dev and sets them automatically. No env vars needed to start.
68
50
 
69
- await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
70
- await humanScroll(page, 'down');
71
- await humanType(page, 'input[type="email"]', 'user@example.com');
72
- await humanClick(page, 760, 400);
73
- await browser.close();
51
+ When trial bandwidth is used up:
52
+ ```
53
+ Error: Trial credits exhausted → upgrade at https://humanbrowser.dev ($13.99/mo)
74
54
  ```
75
55
 
76
56
  ---
77
57
 
78
- ## Get Credentials
58
+ ## Full Setup (3 minutes)
79
59
 
80
- Credentials (proxy username/password/zone) are required to use the residential IP.
60
+ ### Step 1 Get credentials
81
61
 
82
- **→ Purchase at: https://humanbrowser.dev**
62
+ Go to **https://humanbrowser.dev** → choose a plan → pay with card or crypto.
83
63
 
84
- | Plan | Price | Countries | Bandwidth |
85
- |------|-------|-----------|-----------|
86
- | Starter 🇷🇴 | $13.99/mo | Romania only | 2GB |
87
- | Pro 🌍 | $49.99/mo | All 10+ countries | 20GB |
88
- | Enterprise | $199/mo | All + dedicated zone | Unlimited |
64
+ After payment, you'll see your credentials on the success page:
65
+ ```
66
+ PROXY_HOST = brd.superproxy.io
67
+ PROXY_PORT = 22225
68
+ PROXY_USER = brd-customer-hl_XXXXX-zone-mcp_unlocker-country-ro
69
+ PROXY_PASS = your_password
70
+ ```
89
71
 
90
- Payment options: **Stripe** (card + Apple Pay + Google Pay) or **Crypto** (USDT TRC20, BTC, ETH, SOL).
72
+ ### Step 2 Set env vars
91
73
 
92
- After payment → credentials are delivered automatically (email + Telegram).
74
+ ```bash
75
+ export PROXY_HOST=brd.superproxy.io
76
+ export PROXY_PORT=22225
77
+ export PROXY_USER="brd-customer-hl_XXXXX-zone-mcp_unlocker-country-ro"
78
+ export PROXY_PASS="your_password"
79
+ ```
93
80
 
94
- ---
81
+ Or add to your `.env` file:
82
+ ```env
83
+ PROXY_HOST=brd.superproxy.io
84
+ PROXY_PORT=22225
85
+ PROXY_USER=brd-customer-hl_XXXXX-zone-mcp_unlocker-country-ro
86
+ PROXY_PASS=your_password
87
+ ```
95
88
 
96
- ## 🤖 Agent-Native Payment (Autonomous Purchase)
89
+ ### Step 3 Install the skill
97
90
 
98
- Your agent can **purchase credentials without human involvement** using the API.
91
+ ```bash
92
+ clawhub install al1enjesus/human-browser
93
+ # or
94
+ npm install human-browser
95
+ ```
99
96
 
100
- ### Step 1Create payment via API
97
+ ### Step 4Use it
101
98
 
102
99
  ```js
103
- // Your agent calls this to start a purchase
104
- const res = await fetch('https://humanbrowser.dev/api/buy', {
105
- method: 'POST',
106
- headers: { 'Content-Type': 'application/json' },
107
- body: JSON.stringify({
108
- plan: 'starter', // 'starter' | 'pro' | 'enterprise'
109
- currency: 'USDT', // 'card' | 'USDT' | 'BTC' | 'ETH' | 'SOL'
110
- email: 'your@email.com'
111
- })
112
- });
113
- const data = await res.json();
114
- // { payment_url, order_id, currency, method }
115
- ```
100
+ const { launchHuman } = require('./scripts/browser-human');
116
101
 
117
- ### Step 2 Route by payment method
102
+ const { browser, page, humanType, humanScroll } = await launchHuman();
118
103
 
119
- **If currency = 'card' (Stripe):**
120
- ```js
121
- // Send human to the Stripe checkout link
122
- return `To activate Human Browser, please complete payment:\n${data.payment_url}`;
104
+ await page.goto('https://example.com');
105
+ await humanScroll(page, 'down');
106
+ await humanType(page, 'input[name="email"]', 'user@example.com');
107
+ await browser.close();
123
108
  ```
124
109
 
125
- **If currency = 'USDT' / 'BTC' / 'ETH' / 'SOL' (crypto):**
126
- ```js
127
- // payment_url contains the crypto invoice page
128
- // Tell your human the payment URL:
129
- return `To activate Human Browser:
130
- Order: ${data.order_id}
131
- Payment page: ${data.payment_url}
132
-
133
- Open the link to see the exact wallet address and amount.
134
- Credentials will be delivered automatically after confirmation.`;
135
- ```
110
+ Done. Your agent now browses like a real human from Romania.
136
111
 
137
- **For fully autonomous crypto (agent-assisted wallet):**
138
- ```js
139
- // Agent fetches the 0xProcessing invoice page and extracts the address
140
- // Then tells the human EXACTLY what to send and where:
141
- const page = await invoice_page_fetch(data.payment_url);
142
- // Extract: wallet address, amount in USDT, network (TRC20)
143
- return `Please send ${amount} USDT (TRC20) to:\n${walletAddress}\n\nOrder: ${data.order_id}`;
144
- ```
112
+ ---
145
113
 
146
- ### Available plans & currencies
114
+ ## Country selector
147
115
 
148
116
  ```js
149
- // Plans
150
- 'starter' // $13.99/mo Romania, 2GB
151
- 'pro' // $49.99/mo — All countries, 20GB
152
- 'enterprise' // $199/mo — Unlimited + dedicated
153
-
154
- // Currencies
155
- 'card' // Stripe checkout (card + Apple Pay + Google Pay)
156
- 'USDT' // Tether (TRC20 / ERC20)
157
- 'BTC' // Bitcoin mainnet
158
- 'ETH' // Ethereum ERC20
159
- 'SOL' // Solana
160
- ```
117
+ // Starter plan: Romania only
118
+ const { page } = await launchHuman({ country: 'ro' }); // default
161
119
 
162
- ### After payment
120
+ // Pro plan: all countries
121
+ const { page } = await launchHuman({ country: 'us' }); // US residential IP
122
+ const { page } = await launchHuman({ country: 'gb' }); // UK
123
+ const { page } = await launchHuman({ country: 'jp' }); // Japan
124
+ const { page } = await launchHuman({ country: 'de' }); // Germany
125
+ const { page } = await launchHuman({ country: 'nl' }); // Netherlands
163
126
 
164
- Credentials are sent automatically. You'll receive:
165
- ```
166
- PROXY_USER=brd-customer-hl_XXXXXX-zone-mcp_unlocker-country-ro
167
- PROXY_PASS=XXXXXXXXXX
168
- PROXY_HOST=brd.superproxy.io
169
- PROXY_PORT=22225
170
- CDP_ENDPOINT=wss://brd-customer-...@brd.superproxy.io:9222
127
+ // Desktop Chrome instead of iPhone
128
+ const { page } = await launchHuman({ country: 'us', mobile: false });
171
129
  ```
172
130
 
173
- Use these in `launchHuman()`:
174
- ```js
175
- const { page } = await launchHuman({
176
- country: 'ro',
177
- proxyUser: process.env.PROXY_USER,
178
- proxyPass: process.env.PROXY_PASS,
179
- });
180
- ```
131
+ **Country service compatibility:**
132
+
133
+ | Country | Works | ❌ Blocked |
134
+ |---------|---------|-----------|
135
+ | 🇷🇴 `ro` | Instagram, Cloudflare, Binance, Polymarket | US Banks, Netflix US |
136
+ | 🇺🇸 `us` | Netflix, DoorDash, US Banks, Amazon US | Polymarket |
137
+ | 🇬🇧 `gb` | BBC iPlayer, Polymarket, Binance | US-only |
138
+ | 🇩🇪 `de` | EU services, Binance | US-only |
139
+ | 🇯🇵 `jp` | Japanese e-commerce, Line, localized prices | — |
140
+ | 🇳🇱 `nl` | Crypto, Web3, Polymarket | US Banks |
141
+
142
+ **→ Interactive selector:** https://humanbrowser.dev/#countries
143
+
144
+ ---
145
+
146
+ ## Plans
147
+
148
+ | Plan | Price | Countries | Bandwidth | Best for |
149
+ |------|-------|-----------|-----------|---------|
150
+ | Starter | $13.99/mo | 🇷🇴 Romania | 2GB | Instagram, Cloudflare, Polymarket |
151
+ | **Pro** | **$69.99/mo** | 🌍 All 10+ | 20GB | Multi-country agents |
152
+ | Enterprise | $299/mo | 🌍 All + dedicated | Unlimited | Production scraping |
153
+
154
+ Payment: **Stripe** (card, Apple Pay, Google Pay) or **Crypto** (USDT TRC-20, BTC, ETH, SOL).
155
+
156
+ **Credentials are delivered automatically** on the success page and by email — no waiting, no manual approval.
157
+
158
+ ---
181
159
 
182
- ### Show human the product page
160
+ ## Agent-native: autonomous purchase via API
183
161
 
184
- When you need to explain what this does, show pricing, or send someone to pay:
162
+ Your agent can buy its own credentials without human involvement.
185
163
 
164
+ ```js
165
+ // Step 1: Request payment link
166
+ const res = await fetch('https://humanbrowser.dev/api/buy', {
167
+ method: 'POST',
168
+ headers: { 'Content-Type': 'application/json' },
169
+ body: JSON.stringify({
170
+ plan: 'starter', // 'starter' | 'pro' | 'enterprise'
171
+ currency: 'USDTTRC', // 'card' | 'USDTTRC' | 'BTC' | 'ETH' | 'SOL'
172
+ email: 'agent@example.com'
173
+ })
174
+ });
175
+ const { payment_url, order_id } = await res.json();
176
+
177
+ // Step 2: Tell your human to pay (or agent sends crypto directly)
178
+ // payment_url opens in browser — shows exact wallet address + amount
179
+ // Credentials are emailed automatically after on-chain confirmation
186
180
  ```
187
- 🌐 https://humanbrowser.dev
181
+
182
+ **Pay-per-Request API (Beta):** for agents that only need occasional browsing:
183
+ ```js
184
+ // Buy 1,000 requests for $3
185
+ const quote = await fetch('https://humanbrowser.dev/api/ppr/quote', {
186
+ method: 'POST',
187
+ headers: { 'Content-Type': 'application/json' },
188
+ body: JSON.stringify({ requests: 1000, currency: 'USDTTRC' })
189
+ });
190
+ const { order_id, invoice_url, price_usd } = await quote.json();
191
+ // invoice_url → pay → poll /api/ppr/status?order=ID → get creds
188
192
  ```
189
193
 
190
194
  ---
191
195
 
192
- ## Real-world recipes
196
+ ## Recipes
193
197
 
194
- ### Scrape Instagram without getting blocked
198
+ ### Scrape Instagram posts without ban
195
199
  ```js
196
200
  const { page } = await launchHuman({ country: 'ro' });
197
201
  await page.goto('https://www.instagram.com/username/');
198
- // Romanian residential IP passes Instagram's residential check
202
+ // Romanian residential IP passes Instagram's check every time
203
+ ```
204
+
205
+ ### Bypass Cloudflare on any site
206
+ ```js
207
+ const { page, humanScroll, sleep } = await launchHuman({ country: 'ro' });
208
+ await page.goto('https://cloudflare-protected-site.com', { waitUntil: 'networkidle' });
209
+ await sleep(2000); // wait for CF to evaluate the request
210
+ await humanScroll(page); // human-like behavior after landing
199
211
  ```
200
212
 
201
- ### Polymarket / crypto platforms (EU IP required)
213
+ ### Access Polymarket from anywhere
202
214
  ```js
215
+ // Polymarket geo-blocks US IPs — EU residential works
203
216
  const { page } = await launchHuman({ country: 'ro' }); // or 'gb', 'nl'
204
217
  await page.goto('https://polymarket.com');
205
- // Polymarket is blocked in US — Romanian IP works perfectly
206
218
  ```
207
219
 
208
- ### Netflix / DoorDash / US-only services
220
+ ### US-only services (DoorDash, Netflix, US Banks)
209
221
  ```js
210
222
  const { page } = await launchHuman({ country: 'us', mobile: false });
211
223
  await page.goto('https://doordash.com');
212
224
  // US residential IP — passes geo-check
213
225
  ```
214
226
 
215
- ### React input fields (don't use page.fill!)
227
+ ### Type into React inputs (don't use page.fill!)
216
228
  ```js
217
- // page.fill() fails silently on React inputs — use humanType instead
229
+ // page.fill() fails on React inputs — use humanType
218
230
  await humanType(page, 'input[name="email"]', 'user@example.com');
219
231
  ```
220
232
 
221
- ### Bypass animated button detection
233
+ ### Bypass animated/JS-rendered buttons
222
234
  ```js
235
+ // page.click() can fail if button is animating — use JS click
223
236
  await page.evaluate((text) => {
224
237
  [...document.querySelectorAll('button')]
225
238
  .find(b => b.offsetParent && b.textContent.includes(text))?.click();
@@ -230,76 +243,47 @@ await page.evaluate((text) => {
230
243
  ```js
231
244
  await page.goto('https://api.ipify.org?format=json');
232
245
  const { ip } = JSON.parse(await page.textContent('body'));
233
- console.log('IP:', ip); // Should show a residential IP from your target country
246
+ // Should be a residential ISP, not AWS/GCP/Hetzner
234
247
  ```
235
248
 
236
249
  ---
237
250
 
238
- ## Get Proxy Credentials
239
-
240
- ### Option 1: Human Browser Managed (recommended)
241
- Buy directly at **humanbrowser.dev** — we handle everything, from $13.99/mo.
242
- Supports crypto (USDT/ETH/BTC/SOL) and card. AI agents can auto-purchase.
243
-
244
- ### Option 2: Bring Your Own Proxy
245
-
246
- Use any residential proxy provider and plug in your credentials via env vars.
247
- **Recommended providers** (quality tested with Human Browser):
248
-
249
- #### 🥇 Decodo (ex-Smartproxy) best overall quality
250
- > Residential + ISP proxies. 195+ countries. Very high bypass rate.
251
- > Used by major scraping teams. Excellent Cloudflare/DataDome resistance.
252
- > **→ https://decodo.com** | from ~$2.5/GB residential
253
-
254
- #### 🥈 IPRoyal — best price/GB
255
- > Budget residential proxies. Good for high-volume, less strict targets.
256
- > **→ https://iproyal.com** | from $1.75/GB residential
257
-
258
- #### 🥉 Bright Data — enterprise grade
259
- > Most IPs, most countries, best support. Expensive but gold standard.
260
- > **→ https://brightdata.com** | from ~$8.4/GB residential
261
-
262
- When using your own proxy, set env vars before running:
263
- ```env
264
- PROXY_HOST=your-proxy-host
265
- PROXY_PORT=22225
266
- PROXY_USER=your-username
267
- PROXY_PASS=your-password
268
- ```
251
+ ## How it compares to plain Playwright
252
+
253
+ | | Plain Playwright on VPS | Human Browser |
254
+ |--|------------------------|---------------|
255
+ | IP reputation | Data-center (blocked immediately) | Residential ISP |
256
+ | Cloudflare | ❌ Blocked | ✅ Bypassed |
257
+ | DataDome | Blocked | ✅ Bypassed |
258
+ | PerimeterX | ❌ Blocked | ✅ Bypassed |
259
+ | Instagram | IP banned | Works |
260
+ | LinkedIn | Blocked after 3 req | ✅ Undetected |
261
+ | Fingerprint | Bot-detectable | iPhone 15 Pro |
262
+ | Mouse movement | Instant teleport | Bezier curves |
263
+ | Typing | Instant | 60–220ms/char |
264
+ | Country targeting | No | 10+ countries |
265
+ | Agent payment API | No | ✅ Yes |
269
266
 
270
267
  ---
271
268
 
272
- ## Setup
269
+ ## Bring your own proxy (optional)
273
270
 
274
- ```bash
275
- # Install dependencies
276
- npm install playwright
277
- npx playwright install chromium --with-deps
271
+ If you have a Bright Data, Decodo, or IPRoyal account, plug in your own credentials:
278
272
 
279
- # (Optional) Install via skill manager
280
- clawhub install al1enjesus/human-browser
281
- # OR
282
- skild install al1enjesus/human-browser
273
+ ```env
274
+ PROXY_HOST=brd.superproxy.io # your proxy host
275
+ PROXY_PORT=22225 # your proxy port
276
+ PROXY_USER=your-proxy-username
277
+ PROXY_PASS=your-proxy-password
283
278
  ```
284
279
 
285
- ---
286
-
287
- ## How it compares
288
-
289
- | Feature | Regular Playwright | Human Browser |
290
- |---------|-------------------|---------------|
291
- | IP type | Data center → blocked | Residential → clean |
292
- | Bot detection | Fails | Passes all |
293
- | Mouse movement | Instant teleport | Bezier curves |
294
- | Typing speed | Instant | 60–220ms/char |
295
- | Fingerprint | Detectable bot | iPhone 15 Pro |
296
- | Countries | None | 10+ residential |
297
- | Cloudflare | Blocked | Bypassed |
298
- | DataDome | Blocked | Bypassed |
299
- | Agent payment | Manual | API-native |
280
+ The skill works with any residential proxy provider. Recommended:
281
+ - **Decodo** (ex-Smartproxy) — 195M+ IPs, 195 countries, best bypass rate → https://decodo.com
282
+ - **IPRoyal** budget, good for high-volume → https://iproyal.com
283
+ - **Bright Data** — enterprise, most IPs → https://brightdata.com
300
284
 
301
285
  ---
302
286
 
303
- → **Product page + country selector + pricing:** https://humanbrowser.dev
304
- → **Support & questions:** https://t.me/virixlabs
305
- → **Bright Data manual setup:** see `references/brightdata-setup.md`
287
+ → **Buy credentials + pricing:** https://humanbrowser.dev
288
+ → **Pay-per-Request API (agents):** https://humanbrowser.dev/ppr
289
+ → **Support:** https://t.me/virixlabs
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "human-browser",
3
- "version": "3.1.1",
3
+ "version": "3.2.1",
4
4
  "description": "Stealth browser with residential proxies from 10+ countries for AI agents. Bypasses Cloudflare, DataDome, PerimeterX. iPhone 15 Pro fingerprint.",
5
5
  "keywords": [
6
6
  "browser-automation",
@@ -228,7 +228,60 @@ async function launchHuman(opts = {}) {
228
228
  return { browser, ctx, page, humanClick, humanMouseMove, humanType, humanScroll, humanRead, sleep, rand };
229
229
  }
230
230
 
231
- module.exports = { launchHuman, humanClick, humanMouseMove, humanType, humanScroll, humanRead, sleep, rand, COUNTRY_META };
231
+ // ─── TRIAL ────────────────────────────────────────────────────────────────────
232
+
233
+ /**
234
+ * Get free trial credentials from humanbrowser.dev
235
+ * Fetches shared trial proxy (~100MB, Romania). Sets env vars automatically.
236
+ *
237
+ * Usage:
238
+ * const { launchHuman, getTrial } = require('./browser-human');
239
+ * await getTrial(); // sets PROXY_USER/PASS in process.env
240
+ * const { page } = await launchHuman(); // now uses trial credentials
241
+ *
242
+ * When trial runs out → throws { code: 'TRIAL_EXHAUSTED', cta_url: '...' }
243
+ */
244
+ async function getTrial() {
245
+ let https;
246
+ try { https = require('https'); } catch { https = require('http'); }
247
+
248
+ return new Promise((resolve, reject) => {
249
+ const req = https.get('https://humanbrowser.dev/api/trial', (res) => {
250
+ let body = '';
251
+ res.on('data', chunk => body += chunk);
252
+ res.on('end', () => {
253
+ try {
254
+ const data = JSON.parse(body);
255
+ if (data.error || res.statusCode !== 200) {
256
+ const err = new Error(data.error || 'Trial unavailable');
257
+ err.code = 'TRIAL_UNAVAILABLE';
258
+ err.cta_url = 'https://humanbrowser.dev';
259
+ return reject(err);
260
+ }
261
+ // Auto-set env vars so launchHuman() picks them up
262
+ process.env.PROXY_HOST = data.proxy_host;
263
+ process.env.PROXY_PORT = data.proxy_port;
264
+ process.env.PROXY_USER = data.proxy_user;
265
+ process.env.PROXY_PASS = data.proxy_pass;
266
+
267
+ console.log('🎉 Human Browser trial activated! (~100MB Romania residential IP)');
268
+ console.log(' Upgrade at: https://humanbrowser.dev\n');
269
+ resolve(data);
270
+ } catch (e) {
271
+ reject(e);
272
+ }
273
+ });
274
+ });
275
+ req.on('error', (e) => {
276
+ const err = new Error('Could not reach humanbrowser.dev: ' + e.message);
277
+ err.code = 'TRIAL_NETWORK_ERROR';
278
+ reject(err);
279
+ });
280
+ req.setTimeout(10000, () => { req.destroy(); reject(new Error('Trial request timed out')); });
281
+ });
282
+ }
283
+
284
+ module.exports = { launchHuman, getTrial, humanClick, humanMouseMove, humanType, humanScroll, humanRead, sleep, rand, COUNTRY_META };
232
285
 
233
286
  // ─── QUICK TEST ───────────────────────────────────────────────────────────────
234
287
  if (require.main === module) {