SOCKS5 proxy'leri, HTTP proxy'lerinden daha düşük bir ağ düzeyinde çalışır; istekleri değiştirmeden her türlü trafiği (HTTP, HTTPS, FTP, UDP) yönetirler. Bu, onların algılanmasını zorlaştırır ve CAPTCHA korumalı siteler için idealdir. Bu kılavuz, Python, Node.js ve tarayıcı otomasyon araçları genelinde SOCKS5 kurulumunu kapsar.
SOCKS5 ve HTTP Proxy'si
| Özellik | HTTP/HTTPS Proxy | SOCKS5 Proxy'si |
|---|---|---|
| Protokol desteği | Yalnızca HTTP/HTTPS | Herhangi bir TCP/UDP |
| Başlık değişikliği | X-Forwarded-For ekleyebilir |
Değişiklik yok |
| Algılama | Daha kolay (başlıklar sızdırıyor) | Daha zor |
| Hız | Hızlı | Biraz daha yavaş |
| Kimlik doğrulama | Temel/Digest | Kullanıcı adı/password |
| DNS çözünürlüğü | İstemci tarafı | Sunucu tarafı (SOCKS5h) |
| WebSocket desteği | Sınırlı | Tam |
Python Kurulumu
istekler + PySocks
pip install requests[socks] pysocks
import requests
import time
SOCKS5_HOST = "proxy.example.com"
SOCKS5_PORT = 1080
SOCKS5_USER = "proxyuser"
SOCKS5_PASS = "proxypass"
CAPTCHAAI_KEY = "YOUR_API_KEY"
CAPTCHAAI_URL = "https://ocr.captchaai.com"
# SOCKS5 proxy configuration
proxies = {
"http": f"socks5h://{SOCKS5_USER}:{SOCKS5_PASS}@{SOCKS5_HOST}:{SOCKS5_PORT}",
"https": f"socks5h://{SOCKS5_USER}:{SOCKS5_PASS}@{SOCKS5_HOST}:{SOCKS5_PORT}",
}
# socks5h = DNS resolved by proxy server (recommended)
# socks5 = DNS resolved locally
def fetch_through_socks(url):
"""Fetch URL through SOCKS5 proxy."""
return requests.get(
url,
proxies=proxies,
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 Chrome/126.0.0.0 Safari/537.36"
},
timeout=30,
)
def solve_captcha(site_url, sitekey):
"""Solve CAPTCHA via CaptchaAI (direct, no proxy needed)."""
resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
"key": CAPTCHAAI_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": site_url,
"json": 1,
})
data = resp.json()
if data["status"] != 1:
raise Exception(f"Submit: {data['request']}")
task_id = data["request"]
for _ in range(60):
time.sleep(5)
resp = requests.get(f"{CAPTCHAAI_URL}/res.php", params={
"key": CAPTCHAAI_KEY,
"action": "get",
"id": task_id,
"json": 1,
})
data = resp.json()
if data["request"] == "CAPCHA_NOT_READY":
continue
if data["status"] == 1:
return data["request"]
raise Exception(f"Solve: {data['request']}")
raise TimeoutError("Timeout")
# Full workflow
resp = fetch_through_socks("https://staging.example.com/qa-form")
import re
match = re.search(r'data-sitekey="([^"]+)"', resp.text)
if match:
token = solve_captcha("https://staging.example.com/qa-form", match.group(1))
# Submit with token through same proxy
resp = requests.post(
"https://target.com/submit",
data={"g-recaptcha-response": token},
proxies=proxies,
)
aiohttp + SOCKS5
import aiohttp
import aiohttp_socks
import asyncio
async def fetch_async(url):
connector = aiohttp_socks.ProxyConnector.from_url(
f"socks5://{SOCKS5_USER}:{SOCKS5_PASS}@{SOCKS5_HOST}:{SOCKS5_PORT}"
)
async with aiohttp.ClientSession(connector=connector) as session:
async with session.get(url) as resp:
return await resp.text()
asyncio.run(fetch_async("https://staging.example.com/qa-form"))
Selenyum + SOCKS5
from selenium import webdriver
from selenium.webdriver.common.by import By
def create_socks5_driver(host, port, username=None, password=None):
options = webdriver.ChromeOptions()
# SOCKS5 proxy (no auth via command line)
options.add_argument(f"--proxy-server=socks5://{host}:{port}")
# DNS through proxy
options.add_argument("--host-resolver-rules=MAP * ~NOTFOUND, EXCLUDE 127.0.0.1")
options.add_argument("--no-sandbox")
options.add_argument("--window-size=1920,1080")
driver = webdriver.Chrome(options=options)
return driver
# For authenticated SOCKS5, use seleniumwire
from seleniumwire import webdriver as sw_webdriver
def create_auth_socks5_driver():
options = {
"proxy": {
"http": f"socks5h://{SOCKS5_USER}:{SOCKS5_PASS}@{SOCKS5_HOST}:{SOCKS5_PORT}",
"https": f"socks5h://{SOCKS5_USER}:{SOCKS5_PASS}@{SOCKS5_HOST}:{SOCKS5_PORT}",
}
}
chrome_options = sw_webdriver.ChromeOptions()
chrome_options.add_argument("--no-sandbox")
return sw_webdriver.Chrome(
seleniumwire_options=options,
options=chrome_options,
)
# Usage
driver = create_auth_socks5_driver()
driver.get("https://staging.example.com/qa-form")
time.sleep(3)
sitekey = driver.execute_script(
"return document.querySelector('[data-sitekey]')?.getAttribute('data-sitekey')"
)
if sitekey:
token = solve_captcha("https://staging.example.com/qa-form", sitekey)
driver.execute_script(f"""
document.querySelector('#g-recaptcha-response').value = '{token}';
""")
driver.find_element(By.CSS_SELECTOR, "form").submit()
driver.quit()
Node.js + SOCKS5
const { SocksProxyAgent } = require("socks-proxy-agent");
const axios = require("axios");
const CAPTCHAAI_KEY = "YOUR_API_KEY";
const socksAgent = new SocksProxyAgent(
"socks5h://proxyuser:proxypass@proxy.example.com:1080"
);
async function fetchViaSocks(url) {
return axios.get(url, {
httpsAgent: socksAgent,
httpAgent: socksAgent,
headers: {
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/126.0.0.0",
},
});
}
async function solveCaptcha(siteUrl, sitekey) {
// CaptchaAI calls don't go through SOCKS proxy
const submit = await axios.post(
"https://ocr.captchaai.com/in.php",
null,
{
params: {
key: CAPTCHAAI_KEY,
method: "userrecaptcha",
googlekey: sitekey,
pageurl: siteUrl,
json: 1,
},
}
);
const taskId = submit.data.request;
for (let i = 0; i < 60; i++) {
await new Promise((r) => setTimeout(r, 5000));
const result = await axios.get("https://ocr.captchaai.com/res.php", {
params: { key: CAPTCHAAI_KEY, action: "get", id: taskId, json: 1 },
});
if (result.data.request === "CAPCHA_NOT_READY") continue;
if (result.data.status === 1) return result.data.request;
}
throw new Error("Timeout");
}
Puppeteer + ÇORAP5
const puppeteer = require("puppeteer");
async function launchWithSocks5() {
const browser = await puppeteer.launch({
args: [
"--proxy-server=socks5://proxy.example.com:1080",
"--no-sandbox",
"--window-size=1920,1080",
],
});
const page = await browser.newPage();
// Authenticate if needed
await page.authenticate({
username: "proxyuser",
password: "proxypass",
});
await page.goto("https://staging.example.com/qa-form", { waitUntil: "networkidle0" });
const sitekey = await page.evaluate(() =>
document.querySelector("[data-sitekey]")?.getAttribute("data-sitekey")
);
if (sitekey) {
const token = await solveCaptcha(page.url(), sitekey);
await page.evaluate((t) => {
document.querySelector("#g-recaptcha-response").value = t;
}, token);
}
await browser.close();
}
SOCKS5 Proxy'sini CaptchaAI'ye geçirme
CaptchaAI, CAPTCHA'ları proxy IP'nizden çözebilir:
def solve_with_proxy(site_url, sitekey, proxy_url):
"""Pass proxy to CaptchaAI for IP-matched solving."""
# Format: type:host:port:user:pass
proxy_param = f"socks5:{SOCKS5_HOST}:{SOCKS5_PORT}:{SOCKS5_USER}:{SOCKS5_PASS}"
resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
"key": CAPTCHAAI_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": site_url,
"proxy": proxy_param,
"proxytype": "SOCKS5",
"json": 1,
})
data = resp.json()
if data["status"] != 1:
raise Exception(f"Submit: {data['request']}")
task_id = data["request"]
for _ in range(60):
time.sleep(5)
resp = requests.get(f"{CAPTCHAAI_URL}/res.php", params={
"key": CAPTCHAAI_KEY, "action": "get",
"id": task_id, "json": 1,
})
data = resp.json()
if data["request"] != "CAPCHA_NOT_READY":
return data["request"]
raise TimeoutError("Timeout")
Sorun giderme
| Sorun | Sebep | Düzeltme |
|---|---|---|
| Bağlantı reddedildi | Yanlış bağlantı noktası veya ana bilgisayar | SOCKS5 sunucusunun çalıştığını doğrulayın |
| DNS sızıntısı | socks5h:// yerine socks5:// kullanma |
Uzak DNS için socks5h:// kullanın |
| Kimlik doğrulama başarısız oldu | Yanlış kimlik bilgileri | curl --socks5 ile doğrulayın |
| Yavaş bağlantılar | Uzak proxy sunucusu | Coğrafi olarak daha yakın proxy'yi seçin |
| WebSocket başarısız oluyor | SOCKS5 sunucusu UDP'yi desteklemiyor | UDP destekli bir SOCKS5 sunucusu kullanın |
SSS
SOCKS5'i ne zaman HTTP proxy'leri üzerinden kullanmalıyım?
WebSocket trafiğini (modern CAPTCHA'larda yaygındır) yönetmeniz gerektiğinde, proxy başlıklarının sızmasını önlemek istediğinizde veya proxy sağlayıcınız yalnızca SOCKS5 sunduğunda SOCKS5'i kullanın.
CaptchaAI, SOCKS5'i proxy parametresi olarak destekliyor mu?
Evet. Gönderim isteğinizde proxytype=SOCKS5 ve proxy=socks5:host:port:user:pass'yi iletin.
SOCKS5 HTTP proxy'lerinden daha mı hızlı?
SOCKS5'in ek yükü biraz daha azdır (HTTP ayrıştırması yoktur), ancak CAPTCHA iş akışları için fark göz ardı edilebilir. Ana avantajı gizliliktir.
İlgili Kılavuzlar
Daha gizli CAPTCHA çözümü için CaptchaAI ile SOCKS5 proxy'lerini kullanın -API anahtarınızı alın.