Skip to content

Commit f2388a1

Browse files
committed
Propagate fixes across 162 generated packs (normalize CAPTCHA_SITEKEY, rewrite .env.example placeholders), run validations and one live pack test, and refresh verification report and README. Remaining failures are external live-target issues (invisible reCAPTCHA and hCaptcha).
1 parent 220c1e7 commit f2388a1

2,845 files changed

Lines changed: 14186 additions & 7546 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 300 additions & 305 deletions
Large diffs are not rendered by default.

articles/abstract-captcha-solver-provider-agnostic/.env.example

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
CAPTCHAAI_API_KEY=YOUR_API_KEY
44

55
# Target page configuration
6-
# googlekey
7-
CAPTCHA_GOOGLEKEY=CAPTCHA_SITEKEY
6+
# reCAPTCHA v2 sitekey from the target page
7+
CAPTCHA_SITEKEY=YOUR_SITE_KEY
88
# Full URL of the page where the CAPTCHA loads
9-
CAPTCHA_PAGEURL=CAPTCHA_PAGEURL
9+
CAPTCHA_PAGEURL=https://example.com/login
1010

1111
# Polling configuration (optional)
1212
POLL_INTERVAL=5

articles/abstract-captcha-solver-provider-agnostic/bash/solve.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ if [[ -f "$ENV_FILE" ]]; then
2727
fi
2828

2929
CAPTCHAAI_API_KEY="${CAPTCHAAI_API_KEY:-}"
30-
CAPTCHA_GOOGLEKEY="${CAPTCHA_GOOGLEKEY:-}"
30+
CAPTCHA_SITEKEY="${CAPTCHA_SITEKEY:-}"
3131
CAPTCHA_PAGEURL="${CAPTCHA_PAGEURL:-}"
3232
POLL_INTERVAL="${POLL_INTERVAL:-5}"
3333
MAX_TIMEOUT="${MAX_TIMEOUT:-120}"
@@ -77,7 +77,7 @@ fi
7777
# Submit
7878
echo "[*] Submitting reCAPTCHA v2 task..."
7979
SUBMIT_RESPONSE=$(curl -s --max-time 30 \
80-
"${SUBMIT_URL}?key=${CAPTCHAAI_API_KEY}&method=userrecaptcha&googlekey=${CAPTCHA_GOOGLEKEY}&pageurl=${CAPTCHA_PAGEURL}&json=1")
80+
"${SUBMIT_URL}?key=${CAPTCHAAI_API_KEY}&method=userrecaptcha&googlekey=${CAPTCHA_SITEKEY}&pageurl=${CAPTCHA_PAGEURL}&json=1")
8181

8282
if [[ -z "$SUBMIT_RESPONSE" ]]; then
8383
echo "[!] Network error during submission."

articles/abstract-captcha-solver-provider-agnostic/csharp/Solve.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class Solve
4242
public Solve(Dictionary<string, string> env)
4343
{
4444
_apiKey = GetEnv(env, "CAPTCHAAI_API_KEY", "");
45-
_googlekey = GetEnv(env, "CAPTCHA_GOOGLEKEY", "");
45+
_googlekey = GetEnv(env, "CAPTCHA_SITEKEY", "");
4646
_pageurl = GetEnv(env, "CAPTCHA_PAGEURL", "");
4747
_pollInterval = int.Parse(GetEnv(env, "POLL_INTERVAL", "5"));
4848
_maxTimeout = int.Parse(GetEnv(env, "MAX_TIMEOUT", "120"));

articles/abstract-captcha-solver-provider-agnostic/go/solve.go

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,23 @@ var (
3636
)
3737

3838
type apiResponse struct {
39-
Status int `json:"status"`
40-
Request string `json:"request"`
39+
Status int `json:"status"`
40+
Request any `json:"request"`
41+
}
42+
43+
func requestValue(value any) string {
44+
switch v := value.(type) {
45+
case nil:
46+
return ""
47+
case string:
48+
return v
49+
case float64:
50+
return strconv.FormatInt(int64(v), 10)
51+
case json.Number:
52+
return v.String()
53+
default:
54+
return fmt.Sprintf("%v", v)
55+
}
4156
}
4257

4358
func loadEnv(path string) map[string]string {
@@ -110,7 +125,7 @@ func main() {
110125
env := loadEnv(envPath)
111126

112127
apiKey := getEnv(env, "CAPTCHAAI_API_KEY", "")
113-
googlekey := getEnv(env, "CAPTCHA_GOOGLEKEY", "")
128+
googlekey := getEnv(env, "CAPTCHA_SITEKEY", "")
114129
pageurl := getEnv(env, "CAPTCHA_PAGEURL", "")
115130
pollInterval := getEnvInt(env, "POLL_INTERVAL", 5)
116131
maxTimeout := getEnvInt(env, "MAX_TIMEOUT", 120)
@@ -125,11 +140,11 @@ func main() {
125140
// Submit
126141
fmt.Println("[*] Submitting reCAPTCHA v2 task...")
127142
params := url.Values{
128-
"key": {apiKey},
129-
"method": {"userrecaptcha"},
143+
"key": {apiKey},
144+
"method": {"userrecaptcha"},
130145
"googlekey": {googlekey},
131-
"pageurl": {pageurl},
132-
"json": {"1"},
146+
"pageurl": {pageurl},
147+
"json": {"1"},
133148
}
134149

135150
client := &http.Client{Timeout: 30 * time.Second}
@@ -147,11 +162,11 @@ func main() {
147162
}
148163

149164
if submitData.Status != 1 {
150-
classifyError(submitData.Request)
165+
classifyError(requestValue(submitData.Request))
151166
os.Exit(1)
152167
}
153168

154-
taskID := submitData.Request
169+
taskID := requestValue(submitData.Request)
155170
fmt.Printf("[+] Task submitted. ID: %s\n", taskID)
156171

157172
// Poll
@@ -195,7 +210,7 @@ func main() {
195210
resp.Body.Close()
196211

197212
if resultData.Status == 1 {
198-
token := resultData.Request
213+
token := requestValue(resultData.Request)
199214
truncated := token
200215
if len(truncated) > 50 {
201216
truncated = truncated[:50]
@@ -205,7 +220,7 @@ func main() {
205220
os.Exit(0)
206221
}
207222

208-
errCode := resultData.Request
223+
errCode := requestValue(resultData.Request)
209224
if errCode == "CAPCHA_NOT_READY" {
210225
fmt.Printf("[*] Not ready yet, waiting %ds...\n", pollInterval)
211226
time.Sleep(time.Duration(pollInterval) * time.Second)

articles/abstract-captcha-solver-provider-agnostic/java/Solve.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public class Solve {
3838

3939
public Solve(Map<String, String> env) {
4040
this.apiKey = env.getOrDefault("CAPTCHAAI_API_KEY", "");
41-
this.googlekey = env.getOrDefault("CAPTCHA_GOOGLEKEY", "");
41+
this.googlekey = env.getOrDefault("CAPTCHA_SITEKEY", "");
4242
this.pageurl = env.getOrDefault("CAPTCHA_PAGEURL", "");
4343
this.pollInterval = Integer.parseInt(env.getOrDefault("POLL_INTERVAL", "5"));
4444
this.maxTimeout = Integer.parseInt(env.getOrDefault("MAX_TIMEOUT", "120"));
@@ -215,6 +215,11 @@ private static Map<String, String> loadEnv(String path) {
215215
if (parts.length == 2) env.put(parts[0].trim(), parts[1].trim());
216216
}
217217
} catch (IOException e) { /* fall back to system env */ }
218+
for (Map.Entry<String, String> entry : System.getenv().entrySet()) {
219+
if (entry.getValue() != null && !entry.getValue().isEmpty()) {
220+
env.putIfAbsent(entry.getKey(), entry.getValue());
221+
}
222+
}
218223
return env;
219224
}
220225

articles/abstract-captcha-solver-provider-agnostic/kotlin/solve.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ fun classifyError(error: String) {
8282
fun main() {
8383
val env = loadEnv("../.env")
8484
val apiKey = getEnv(env, "CAPTCHAAI_API_KEY")
85-
val googlekey = getEnv(env, "CAPTCHA_GOOGLEKEY")
85+
val googlekey = getEnv(env, "CAPTCHA_SITEKEY")
8686
val pageurl = getEnv(env, "CAPTCHA_PAGEURL")
8787
val pollInterval = getEnv(env, "POLL_INTERVAL", "5").toInt()
8888
val maxTimeout = getEnv(env, "MAX_TIMEOUT", "120").toInt()

articles/abstract-captcha-solver-provider-agnostic/node/solve.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const SUBMIT_URL = "https://ocr.captchaai.com/in.php";
1414
const RESULT_URL = "https://ocr.captchaai.com/res.php";
1515

1616
const API_KEY = process.env.CAPTCHAAI_API_KEY || "";
17-
const googlekey = process.env.CAPTCHA_GOOGLEKEY || "";
17+
const googlekey = process.env.CAPTCHA_SITEKEY || "";
1818
const pageurl = process.env.CAPTCHA_PAGEURL || "";
1919
const POLL_INTERVAL = parseInt(process.env.POLL_INTERVAL || "5", 10);
2020
const MAX_TIMEOUT = parseInt(process.env.MAX_TIMEOUT || "120", 10);

articles/abstract-captcha-solver-provider-agnostic/php/solve.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
define('RESULT_URL', 'https://ocr.captchaai.com/res.php');
1818

1919
$apiKey = $_ENV['CAPTCHAAI_API_KEY'] ?? '';
20-
$googlekey = $_ENV['CAPTCHA_GOOGLEKEY'] ?? '';
20+
$googlekey = $_ENV['CAPTCHA_SITEKEY'] ?? '';
2121
$pageurl = $_ENV['CAPTCHA_PAGEURL'] ?? '';
2222
$pollInterval = (int)($_ENV['POLL_INTERVAL'] ?? 5);
2323
$maxTimeout = (int)($_ENV['MAX_TIMEOUT'] ?? 120);

articles/abstract-captcha-solver-provider-agnostic/python/solve.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
RESULT_URL = "https://ocr.captchaai.com/res.php"
2121

2222
API_KEY = os.getenv("CAPTCHAAI_API_KEY", "")
23-
CAPTCHA_GOOGLEKEY = os.getenv("CAPTCHA_GOOGLEKEY", "")
23+
CAPTCHA_SITEKEY = os.getenv("CAPTCHA_SITEKEY", "")
2424
CAPTCHA_PAGEURL = os.getenv("CAPTCHA_PAGEURL", "")
2525
POLL_INTERVAL = int(os.getenv("POLL_INTERVAL", "5"))
2626
MAX_TIMEOUT = int(os.getenv("MAX_TIMEOUT", "120"))
@@ -46,7 +46,7 @@ def submit_task() -> str:
4646
payload = {
4747
"key": API_KEY,
4848
"method": "userrecaptcha",
49-
"googlekey": CAPTCHA_GOOGLEKEY,
49+
"googlekey": CAPTCHA_SITEKEY,
5050
"pageurl": CAPTCHA_PAGEURL,
5151
"json": "1",
5252
}

0 commit comments

Comments
 (0)