Tích hợp công cụ tự động hóa
Công cụ nào cũng cùng một cách: đọc site key trên trang, lấy kết quả qua API và điền vào trang. Bắt đầu bằng cách dán ví dụ cho các công cụ phổ biến.
Selenium
Mở trang bằng Selenium, đọc site key, lấy token qua API rồi điền vào trường g-recaptcha-response.
- 1Đọc data-sitekey trên trang
- 2Tạo task bằng createTask
- 3Điền token vào trường ẩn và gửi form
from selenium import webdriver
from selenium.webdriver.common.by import By
import requests, time
API, KEY = "https://gatesolver.com", "YOUR_API_KEY"
driver = webdriver.Chrome()
driver.get("https://www.google.com/recaptcha/api2/demo")
site_key = driver.find_element(By.CSS_SELECTOR, "[data-sitekey]").get_attribute("data-sitekey")
task = requests.post(f"{API}/createTask", json={"clientKey": KEY, "task": {
"type": "ReCaptchaV2TaskProxyLess", "websiteURL": driver.current_url, "websiteKey": site_key}}).json()
while True:
time.sleep(3)
r = requests.post(f"{API}/getTaskResult", json={"clientKey": KEY, "taskId": task["taskId"]}).json()
if r.get("status") == "ready":
break
driver.execute_script("document.getElementById('g-recaptcha-response').innerHTML = arguments[0]", r["solution"]["gRecaptchaResponse"])
driver.find_element(By.ID, "recaptcha-demo-submit").click()Playwright
Đọc site key Turnstile trong Playwright và điền token nhận được vào trường cf-turnstile-response.
- 1Đọc site key
- 2Lấy token qua API
- 3Điền token và gửi
import { chromium } from "playwright";
const API = "https://gatesolver.com", KEY = "YOUR_API_KEY";
const post = (p, b) => fetch(API + p, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify(b) }).then((r) => r.json());
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto("https://example.com/login");
const siteKey = await page.getAttribute(".cf-turnstile", "data-sitekey");
const { taskId } = await post("/createTask", { clientKey: KEY, task: { type: "AntiTurnstileTaskProxyLess", websiteURL: page.url(), websiteKey: siteKey } });
let r;
do { await page.waitForTimeout(3000); r = await post("/getTaskResult", { clientKey: KEY, taskId }); } while (r.status === "processing");
await page.evaluate((tk) => { document.querySelector("[name=cf-turnstile-response]").value = tk; }, r.solution.token);
await page.click("button[type=submit]");Puppeteer
Lấy token reCAPTCHA v3 bằng Puppeteer và đưa vào yêu cầu mà trang gửi đi. Đặt giá trị pageAction giống với trang.
- 1Tìm site key và giá trị action
- 2Lấy token v3 qua API
- 3Điền token vào yêu cầu
import puppeteer from "puppeteer";
const API = "https://gatesolver.com", KEY = "YOUR_API_KEY";
const post = (p, b) => fetch(API + p, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify(b) }).then((r) => r.json());
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto("https://example.com/signup");
const { taskId } = await post("/createTask", { clientKey: KEY, task: {
type: "ReCaptchaV3TaskProxyLess", websiteURL: page.url(), websiteKey: "6Lc...", pageAction: "signup" } });
let r;
do { await new Promise((s) => setTimeout(s, 3000)); r = await post("/getTaskResult", { clientKey: KEY, taskId }); } while (r.status === "processing");
await page.evaluate((tk) => { document.querySelector("#g-recaptcha-response").value = tk; }, r.solution.gRecaptchaResponse);n8n
Dùng hai node HTTP Request của n8n để tạo task và nhận kết quả. Dùng node Wait để chờ 3 giây.
- 1HTTP Request: createTask
- 2Wait: 3 giây
- 3HTTP Request: getTaskResult
Method: POST
URL: https://gatesolver.com/createTask
Body (JSON):
{
"clientKey": "YOUR_API_KEY",
"task": { "type": "ReCaptchaV2TaskProxyLess", "websiteURL": "{{ $json.url }}", "websiteKey": "{{ $json.sitekey }}" }
}
Method: POST
URL: https://gatesolver.com/getTaskResult
Body (JSON): { "clientKey": "YOUR_API_KEY", "taskId": "{{ $json.taskId }}" }Thư viện in.php
Các thư viện xây dựng cho định dạng in.php cũng giải được bằng GateSolver khi bạn đổi địa chỉ máy chủ.
- 1Điền giá trị server vào thư viện
- 2Nhập API key
- 3Gọi như bình thường
import time, requests
B = "https://gatesolver.com"
r = requests.get(f"{B}/in.php", params={"key": "YOUR_API_KEY", "method": "userrecaptcha",
"googlekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", "pageurl": "https://www.google.com/recaptcha/api2/demo", "json": 1}).json()
while True:
time.sleep(3)
res = requests.get(f"{B}/res.php", params={"key": "YOUR_API_KEY", "action": "get", "id": r["request"], "json": 1}).json()
if res["request"] != "CAPCHA_NOT_READY":
break
print(res["request"])