C# ?? ????? ???? Cloudflare Turnstile CAPTCHA ????????? ?? ???? ?? ????

Rajinder Singh
Deep Learning Researcher
17-Sep-2024

CAPTCHA ????????? ?? ???????? ?? ??????? ???? ?? ??????? ??? ?? ???? ??, ????? ?? Cloudflare ?? Turnstile ?? ??? ??? ??? ?? ?????? ?????? ?? ??? ???, ??? ?????? ?? ?? CAPTCHA ?????? ?? ???? ???, ????? Cloudflare Turnstile ???? ???????? ????????? ?? ???? ?? ????? ?????? ???????? ???? ?? ???? ???????? ?????????? ?? ???? ???? ?? ??? ??????? ???? ??? ??? ?? ???????????? ???, ??? ???? C# ?? ????? ???? Cloudflare Turnstile CAPTCHA ????????? ?? ????? ???? ?? ????? ?? ???? ??? ???????, ?? ???? ???? ??????? ???????? ?? ?????? ?? ??? ?????????? ??????????? ?? ????? ?????? ???? ???
???? ????
- Cloudflare Turnstile ?? ?????
- C# ????????? ?????????? ??? ?? ????
- .NET ??????? ?? ??????? ????
- C# ????????? ?? ??? VS ??? ????????? ????
- API ????? ?????????????? ??????? ????
- CapSolver ?? ??? ??????? ????
- Turnstile ?? ??? SiteKey ???????????? ????
- CapSolver API ?? ????? ???? Turnstile ???? ??????? ????
- ????? ??? ??????
- ?????? ???????? ?? ?????? ??????
- ?????? ???? ?????????
- ??? ?? ????????
- ????????
Cloudflare Turnstile ?? ?????
Cloudflare Turnstile ?? ????? CAPTCHA ?????? ?? ???? ??? ???????????? ?? ??? ??????? ????? ????????? ???? ???, ????????? ?? ???????? ??? ?? ????? ?? ??? ??????? ???? ??? ??? ???????? CAPTCHA ?? ??????, ?? ????? ????? ?? ?? ???? ?? ??????? ?? ????? ???? ??? ????? ???? ???, Turnstile ?? ???? ??????? ????????? ?? ?????? ?? ??????? ???? ??? ?? ?? ????????? ???? ?? ??? ?????????? ?? ??????? ?? ??????? ??? ????????? ?? ???????? ???? ?? ?? ?????? ???? ?? ?? ????
Turnstile ?? ?????? ?? ????? ???? ??, ?????? ???? ???????, ????? ?????? ?? ????????? ??? ????? ???, ???? ?? ?????? ??????? ?? ??? ???? ???????? ?????????? ?? ??? ?? ???? ??????? ??? ?? ??? ??????? ??????? ?? ??? ?? ????????? ????? ????? ??, ????? ??????? ?? ??? ?? ?? ??????????? ???? ???
???? ???
????? ?????? ???????? ?? ??? ???? ???? ??? ???? ????; CapSolver: WEBS. ??? ????? ???? ?? ???, ???? ???????? ??????? ?? ??? 5% ???????? ???? ??????, ?????????
C# ????????? ?????????? ??? ?? ????
1. .NET ??????? ?? ??????? ????
- ?? ????? ?? ???? .NET ??????? ???? ?? ????
- .NET ??????? ???? ?? ??? ???? ???????? ?????? ?? ??? ??? ?? ????????? ?? ???? ?????
2. C# ????????? ?? ??? VS ??? ????????? ????
- VS ??? ?? ??? C# ????????? ??????? ?????
- VS ??? ???, ????????? ???????????? ??? "C#" ????? ?? ???????????? ?????? ???????? ?????? ??????? ?????
- ?? ????????? IntelliSense ?? ??? ??????????? ???? ???????? ?????? ???? ??, ????? C# ????? ???? ?? ???? ???

- JSON ???? ?? ??????? ?? ??? JSON ???????? ?????
Newtonsoft.Json
??????? ?????- ?? ?? ????? ?? ????? ?? ??? NuGet ?? ????? ???? ??????? ?? ???? ???:bash
dotnet add package Newtonsoft.Json
- ?? ?? ????? ?? ????? ?? ??? NuGet ?? ????? ???? ??????? ?? ???? ???:
API ????? ?????????????? ??????? ????
1. CapSolver ?? ??? ??????? ????
- CapSolver ?? ?? ???? ????? ???? ???? API ?????? ?? ????? ??????? ?? ????
- ??????? ?? ???, ???? CapSolver ?? CAPTCHA-?????? ?????? ?? ??????? ?? ??? ?????? ?? API ????? ??????? ?????
2. Turnstile ?? ??? SiteKey ???????????? ????
- Cloudflare Turnstile CAPTCHA ????????? ?? ???, ?????? ??????? ?? ???
siteKey
??????? ???? ?????? ??? ???????? API ?? ????? ???? ?? CAPTCHA ?? ?? ???? ?? ???siteKey
?? ???????? ???? ??? - ?? CapSolver ????????? ?? ????? ????
siteKey
????? ???? ???, ?? ????????? ?? ??? ???? ???
CapSolver API ?? ????? ???? Turnstile ???? ??????? ????
???? CapSolver API ?? ??? ?????? ????, CAPTCHA-?????? ?? ?????? ???? ?? Turnstile ???? ???????????? ???? ?? ??? ???? ??? ???
csharp
public static async Task<string> CallCapsolver()
{
// // GET ?????? ?????
// var todoItem = await GetTodoItemAsync(API_URL);
// Console.WriteLine("GET ?????? ??????:");
// Console.WriteLine(todoItem);
var data = new
{
clientKey = CAPSOLVER_API_KEY,
task = new
{
type = "AntiTurnstileTaskProxyLess",
websiteURL = PAGE_URL,
websiteKey = SITE_KEY,
metadata = new { action = "login" }
}
};
// POST ?????? ?????
var response = await PostTodoItemAsync("https://api.capsolver.com/createTask", data);
Console.WriteLine("POST ?????? ??????:");
var responseString = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseString);
JObject taskResp = JsonConvert.DeserializeObject<JObject>(responseString);
var taskId = taskResp["taskId"].ToString();
if (string.IsNullOrEmpty(taskId))
{
Console.WriteLine("??? ????? ID ??????? ???? ????");
return "";
}
Console.WriteLine($"????? ??? ????? ID: {taskId}");
while (true)
{
await Task.Delay(1000); // 1 ????? ?? ??? ????
var resultData = new
{
clientKey = CAPSOLVER_API_KEY,
taskId = taskId
};
// content = new StringContent(JsonConvert.SerializeObject(data), System.Text.Encoding.UTF8, "application/json");
// response = await httpClient.PostAsync(uri, content);
response = await PostTodoItemAsync("https://api.capsolver.com/getTaskResult", resultData);
responseString = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseString);
if (!response.IsSuccessStatusCode)
{
Console.WriteLine($"????? ?????? ??????? ???? ??? ????: {responseString}");
return "";
}
taskResp = JsonConvert.DeserializeObject<JObject>(responseString);
Console.WriteLine(taskResp);
var status = taskResp["status"].ToString();
if (status == "ready")
{
Console.WriteLine("??????????? => " + responseString);
return taskResp["solution"]["token"].ToString();
}
if (status == "failed")
{
Console.WriteLine("????! => " + responseString);
return "";
}
}
}
????? ??? ??????
csharp
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace HttpExample
{
public class Program
{
private const string CAPSOLVER_API_KEY = "CAI-xxxxxxxxxxxxxxxxxxx";
private const string PAGE_URL = "https://dash.cloudflare.com/login";
private const string SITE_KEY = "0x4AAAAAAAJel0iaAR3mgkjp";
public static async Task Main(string[] args)
{
var token = await CallCapsolver();
Console.WriteLine($"token: {token}");
await Login(token);
}
public static async Task<string> CallCapsolver()
{
// // GET ?????? ?????
// var todoItem = await GetTodoItemAsync(API_URL);
// Console.WriteLine("GET ?????? ??????:");
// Console.WriteLine(todoItem);
var data = new
{
clientKey = CAPSOLVER_API_KEY,
task = new
{
type = "AntiTurnstileTaskProxyLess",
websiteURL = PAGE_URL,
websiteKey = SITE_KEY,
metadata = new { action = "login" }
}
};
// POST ?????? ?????
var response = await PostTodoItemAsync("https://api.capsolver.com/createTask", data);
Console.WriteLine("POST ?????? ??????:");
var responseString = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseString);
JObject taskResp = JsonConvert.DeserializeObject<JObject>(responseString);
var taskId = taskResp["taskId"].ToString();
if (string.IsNullOrEmpty(taskId))
{
Console.WriteLine("??? ????? ID ??????? ???? ????");
return "";
}
Console.WriteLine($"????? ??? ????? ID: {taskId}");
while (true)
{
await Task.Delay(1000); // 1 ????? ?? ??? ????
var resultData = new
{
clientKey = CAPSOLVER_API_KEY,
taskId = taskId
};
// content = new StringContent(JsonConvert.SerializeObject(data), System.Text.Encoding.UTF8, "application/json");
// response = await httpClient.PostAsync(uri, content);
response = await PostTodoItemAsync("https://api.capsolver.com/getTaskResult", resultData);
responseString = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseString);
if (!response.IsSuccessStatusCode)
{
Console.WriteLine($"????? ?????? ??????? ???? ??? ????: {responseString}");
return "";
}
taskResp = JsonConvert.DeserializeObject<JObject>(responseString);
Console.WriteLine(taskResp);
var status = taskResp["status"].ToString();
if (status == "ready")
{
Console.WriteLine("??????????? => " + responseString);
return taskResp["solution"]["token"].ToString();
}
if (status == "failed")
{
Console.WriteLine("????! => " + responseString);
return "";
}
}
}
public static async Task Login(string token)
{
using var httpClient = new HttpClient();
// ?????? ???????? ??????
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Cookie", $"cf_clearance={token}");
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Host", "dash.cloudflare.com");
var data = new {
cf_challenge_response = token,
email = "[email protected]",
password = "123456",
};
var json = JsonConvert.SerializeObject(data);
var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync("https://dash.cloudflare.com/api/v4/login", content);
if (!response.IsSuccessStatusCode)
{
throw new Exception($"?????? ?????? ??? {response.StatusCode} ?? ??? ???? ???");
}
var responseString = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseString);
}
private static async Task<HttpResponseMessage> GetTodoItemAsync(string url)
{
using var httpClient = new HttpClient();
var response = await httpClient.GetAsync(url);
if (!response.IsSuccessStatusCode)
{
throw new Exception($"?????? ?????? ??? {response.StatusCode} ?? ??? ???? ???");
}
// var responseString = await response.Content.ReadAsStringAsync();
return response;
}
private static async Task<HttpResponseMessage> PostTodoItemAsync(string url, object item)
{
using var httpClient = new HttpClient();
var json = JsonConvert.SerializeObject(item);
var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync(url, content);
if (!response.IsSuccessStatusCode)
{
throw new Exception($"?????? ?????? ??? {response.StatusCode} ?? ??? ???? ???");
}
return response;
}
}
}
?????? ???????? ?? ?????? ??????
- ?????? ????: ??? ???? "?????? ????" ?????? ?? ????? ???? ????? ??, ?? ???????? ???? ?? API ????? ?? ???? ????? ??? ????
- ????????? ???? ?? ???? CapSolver ???? ?? ?? ?????? API ????? ???
- ?????? ?????? ??
siteKey
?????? ??????? ?? ??? ???? ???
????????
- ????? ??? ????:
CallCapsolver
???? ???, ?? ????? ??????AntiTurnstileTaskProxyLess
,websiteURL
??websiteKey
???????? ???? ???? ?? ???????? ?? CAPTCHA-?????? ????? ????? ?? ??? CapSolver ?? ???? ???? ??? - ????? ?????? ?? ??? ??????: ?? ??? ????? ???? ???? ?? ???, ??? ????? ?? ?????? ?? ???? ???? ?? ???
getTaskResult
???????? ?? ??? ???? ??? ??? ????? ????? ??, ?? ?? ?????? (Turnstile ????) ???????????? ???? ??; ??? ?? ???? ?? ???? ??, ?? ?? ?? ?????? ???? ??? - ???? ?? ????? ????:
Login
???? CapSolver ?? ??????? ???? ?? ????? Cloudflare-???????? ??????? ?? ????? ?????? ?? ???????? ???? ?? ??? ???? ???
????????
?? ???????????? ?? ???? ????, ?? C# ?? ????? ???? Cloudflare Turnstile CAPTCHA ????????? ?? ?? ???? ?? ???????? ?? ??????? ???? ??? ????? ?????? CapSolver ?? API ??????? ????????? ?? ???????? ???? ?? ?? ????????? ?? ???? ????? ?????? ???? ??, ????? ???? ??????? ???????? ????? ???? ???? ???? ??????? ?? ????? ?? ???, CapSolver ?? ?????
??????? ?? ???
??????????: ??? ?????????? ??? ????? ???? ??, ?????? ?? ????? ????????????? ?? ???? ???? ?????????? ??? ????? ????????? ???? ?? ???? ??? ?????? ??????? ?? ??????? ???? ?? ?????? ??, ?? ???? ??
robots.txt
????? ?? ???? ?? ?????? ?? ?????? ????? CapSolver ???? ?? ???-??????? ?????????? ?? ??? ????? ?????? ?? ???????? ?? ?????? ?? ????? ???? ??? ???? ????????? ?? ???? CAPTCHA ?? ?????? ???? ?? ??? ???????? ??????? ?? ???????? ?????? ???????? ?? ???? ?? ???? ??? ??????? ???????? ?? ???? ?? ??? ????????? ???? ?? ???? ?????????? ?????????? ??? ???? ??????? ?? ???????? ?? ??????? ??? ????
??????? ????????: ?? ????? ?? ?????? ?? ?? ??????? ???? ????????? ?????????? ?? ??? ??? CapSolver ??? ???? ??????? ?? ???????? ?? ???? ???? ?? ??? ????????? ??? CapSolver ??????? ?? ????? ????, ???????? ?? ???????? ???? ???? ?????????? ?? ??? ???? ???? ?????? ?? ?? ???? ???? ?? ?????? ????? ?????? ?????? ?????????? ????? ?? ????? ????? ?? ???-??? ????????? ???? ???????? ?? ????? ?????? ????????? ?? ?? ???? ??? 100% ??????? ????????? ???? ???? ?? ???? ?????? ?? ????????? ????? ?? ??????????? ???? ???? ???? ??????? ?? ???, ????? ????? ???? ?? ?????? ?? ???????? ???? ?? ?????
????

Cloudflare TLS ???????????????: ?? ???? ?? ?? ??? ???? ?? ????
Cloudflare ?????? ??????? ?? ??? TLS ??????????????? ?? ?????, ????? ?? ??? ????? ?? ?????? ????? ???? ?? ?????, ?? ??? ?????????? ?? ???????? ?????????? ??????? ?? ??? ??? ?? ???? ?? ??????? ?????? ?? ???? ??? ??????

Rajinder Singh
28-Feb-2025

Cloudflare ?? ???????? ??????? ?? ???? ???? ???????
?? ???? ???, ?? Cloudflare ?? ???????? ????????? ?? ???? ??????? ?? ????? ?? ??????? ?????? ?? ??? ????????

Rajinder Singh
20-Feb-2025

2025 ??? Python ?? Go ?? ????? ???? Cloudflare ?? ???? ?? ????
Cloudflare Turnstile ???? ??, ???? ???? ??? ??????? ???? ??????, ?? ??????? ?? ??? Python ?? Go ?? ????? ??????, ???? Turnstile Python ???????? ?? ??? ??? ???? ??, ?? CapSolver ???? ???????? ?? ????? ???? ??? ??????? ??? ?? ???? ?????? ?????

Rajinder Singh
05-Nov-2024

Selenium ?? ????? ???? Cloudflare Turnstile Captchas ?? ???? ?? ????
?? ????? ???, ?? ???????? ?? ????? ???? Cloudflare Turnstile Captchas ?? ??? ???? ?? ??? ?? ??????? ??????? ?? ????? ???????

Rajinder Singh
11-Oct-2024

??? ???????? ?? ??? Cloudflare ?????????? ?? ???????? ??? ?? ???? ?? ????
?? ??? ???????? ??? Cloudflare Turnstile CAPTCHA ?? ??????? ?? ????????? ?? ??? ??????? ?? ????? ??? Puppeteer ?? CapSolver ?? ????? ???? ???? ?????? ?? ???????? ???? ?? ??????? ?? ????? ???????

Rajinder Singh
27-Sep-2024

C# ?? ????? ???? Cloudflare Turnstile CAPTCHA ????????? ?? ???? ?? ????
?? C# ?? ????? ???? Cloudflare Turnstile ?? CAPTCHA ?????? ?? ????? ?? ???? ?? ??????, ?? ??????? ????? ????? ???? ??? ???? ???!

Rajinder Singh
17-Sep-2024