Cloudflare's challenge pages and captchas are essential for website security — but they can also block legitimate automation like QA testing, accessibility scanning, or authorized data collection. Combining a high-quality residential proxy (Nstproxy) with a reliable captcha-solving service (CapSolver) creates a robust, production-ready flow to handle challenges and continue authorized automation.
This guide explains why Nstproxy + CapSolver is a reliable combo, walks through both code-based and no-code (browser extension) integrations, and provides practical examples (JavaScript & Python), reliability tips, and a CapSolver discount for qualified users.
Important compliance reminder:
This guide is intended only for legitimate, authorized use (your own websites, explicit client permission, or approved testing).
Do not use these techniques to bypass security on sites without permission.
Why use Nstproxy + CapSolver?

-
Nstproxy supplies real residential / ISP-like IPs with strong reputation and geo-targeting — lowering IP-based blocking

-
CapSolver provides automated captcha solving (reCAPTCHA v2/v3, Cloudflare Turnstile, hCaptcha, AWS WAF, etc.)
-
Combined → handles:
- Proxy identity
- Captcha challenges
- Session integrity
🔁 How it works (high-level flow)
- Proxy assignment through Nstproxy
- Request page through proxy
- Detect Cloudflare challenge
- Submit captcha task → CapSolver
- Receive solution token → submit using same proxy
- Access unlocked content
Option A — Code integration
JavaScript (Node.js)
// npm install axios https-proxy-agent
const axios = require('axios');
const HttpsProxyAgent = require('https-proxy-agent');
const NST_PROXY = "D3B153E4F8170622-residential-country_US-r_30m-s_abc123:[email protected]:24125";
const PROXY_URL = `http://${NST_PROXY}`;
const CAPSOLVER_API_KEY = "YOUR_CAPSOLVER_API_KEY";
const TARGET_URL = "https://example.com/";
const SITE_KEY = "sitekey-from-target-page";
async function solveCaptchaWithCapSolver(siteKey, url) {
const createResp = await axios.post('https://api.capsolver.com/createTask', {
clientKey: CAPSOLVER_API_KEY,
task: {
type: "RecaptchaV2TaskProxyless",
websiteURL: url,
websiteKey: siteKey
}
});
const taskId = createResp.data.taskId;
while (true) {
const res = await axios.post('https://api.capsolver.com/getTaskResult', { clientKey: CAPSOLVER_API_KEY, taskId });
if (res.data.status === 'ready') return res.data.solution.gRecaptchaResponse;
await new Promise(r => setTimeout(r, 3000));
}
}
async function fetchProtectedPage() {
const agent = new HttpsProxyAgent(PROXY_URL);
const resp = await axios.get(TARGET_URL, { httpsAgent: agent, proxy: false, validateStatus: null });
if (resp.status === 403 || resp.data.includes('captcha') || resp.data.includes('g-recaptcha')) {
const token = await solveCaptchaWithCapSolver(SITE_KEY, TARGET_URL);
const submitResp = await axios.post(TARGET_URL, { 'g-recaptcha-response': token }, { httpsAgent: agent, proxy: false });
return submitResp.data;
}
return resp.data;
}
fetchProtectedPage().then(console.log).catch(console.error);
Python Example
import time
import random
from curl_cffi import requests
api_key = "...."
site_url = "xxx"
session_id = random.randint(int(10e5), int(10e8))
proxy = f"http://CHANNELID-residential-country_ANY-r_3m-s_{session_id}:[email protected]:24125"
def capsolver(proxy):
print("proxy:", proxy)
payload = {
"clientKey": api_key,
"task": {
"type": 'AntiCloudflareTask',
"websiteURL": site_url,
"proxy": proxy
}
}
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("Failed to create task:", res.text)
return
print(f"Got taskId: {task_id} / Getting result...")
start_time = time.time()
while True:
payload = {"clientKey": api_key, "taskId": task_id}
res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
resp = res.json()
status = resp.get("status")
print("Status:", status)
if status == "ready":
print(f"{time.time() - start_time}s | response: {res.text}")
return resp.get("solution", {})
if status == "failed" or resp.get("errorId"):
print("Solve failed!", res.text)
return
def main():
solution = capsolver(proxy)
print(solution)
if __name__ == "__main__":
main()
Option B — No-code integration (CapSolver Extension + Nstproxy)
Perfect for:
✅ QA teams
✅ Manual access workflows
✅ Browser-based automation
Steps
1️⃣ Log in to CapSolver
2️⃣ Open extension → Settings
3️⃣ Toggle Proxy ON
4️⃣ Enter Nstproxy details:

Host: http://gate.nstproxy.io/
Port: 24125
Username: <Your Nstproxy username>
Password: <Your Nstproxy password>

Best practices & reliability
- Use consistent session for challenge + verification
- Prefer residential/ISP proxies for login flows
- Respect rate limits (avoid aggressive retries)
- Choose correct CapSolver task type
- Log proxy + captcha metadata for debugging
Pricing & discount
| Service | Benefit |
|---|---|
| Nstproxy | Flexible residential / ISP / datacenter plans |
| CapSolver | Use promo code CAPSOLVER10 for 10% OFF |
⚠️ Security & legal note
Approved only for:
✅ Websites you own
✅ Explicit client permission
✅ Authorized enterprise automation
Do not use to bypass security unlawfully.
✅ Quick Recap
- Nstproxy → better IP identity + reduced Captcha trips
- CapSolver → automated Cloudflare challenge solving
- Combined → reliable authorized workflow automation
💡 Browser extension method = fastest no-code solution
💡 Code workflow = best for scalable systems

