Resolving Vercel Firewall Challenges
Vercel Firewall gates protected URLs behind a JavaScript challenge that issues a _vcrcs session cookie on success. MeshPrivacy executes the challenge server-side and returns the cookie ready to attach to your downstream requests.
Service Schema
| Field | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Vercel-hosted page showing the challenge |
script_url | string | No | Vercel challenge script URL |
challenge_id | string | No | Challenge ID from URL params or hidden inputs |
proxy_config | string | No | Proxy in http://user:pass@ip:port format |
user_agent | string | No | Custom user agent |
Service ID: vercel · Status: Stable
Real-time API status: trust.meshprivacy.com
Cookies Returned
_vcrcs — Vercel firewall clearance cookieBind the cookie to the same proxy IP and user agent used for the solve.
Integration Example
vercel.js
// Submit Vercel Firewall task to MeshPrivacy
const response = await fetch('https://api.meshprivacy.com/v1/tasks/submit', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'X-API-Key': API_KEY },
body: JSON.stringify({
service: 'vercel',
url: 'https://target-site.vercel.app/', // required
script_url: 'https://vercel.com/_vercel/challenge.js', // optional
challenge_id: '<from URL params or hidden inputs>', // optional
proxy_config: 'http://user:pass@ip:port', // optional
user_agent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)...'// optional
})
});
const { task_id } = await response.json();
const result = await fetch(`https://api.meshprivacy.com/v1/tasks/result/${task_id}`, {
headers: { 'X-API-Key': API_KEY }
});
const { cookies } = await result.json();
// Use the returned _vcrcs cookie in downstream requestsFAQ
Some Vercel deployments rotate the challenge ID per request and embed it in the URL or a hidden form field. Pass it explicitly only when the page exposes it.
