👋
ClickCaptchaの突破方法
1 CAPTCHA画像をダウンロードします。
2 画像を API に送信します。
SDKを使用する場合 (推奨):
PHP
// https://github.com/2captchacom/2captcha-php
require(__DIR__ . '/../src/autoloader.php');
$solver = new \TwoCaptcha\TwoCaptcha('YOUR_API_KEY');
try {
$result = $solver->coordinates([
'file' => 'path/to/captcha.jpg',
'lang' => 'en',
]);
} catch (\Exception $e) {
die($e->getMessage());
}
die('Captcha solved: ' . $result->code);
Python
# https://github.com/2captchacom/2captcha-python
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
from twocaptcha import TwoCaptcha
api_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')
solver = TwoCaptcha(api_key, defaultTimeout=120, pollingInterval=5)
try:
result = solver.coordinates('path/to/captcha.jpg',
lang='en')
except Exception as e:
sys.exit(e)
else:
sys.exit('solved: ' + str(result))
Java
// https://github.com/2captchacom/2captcha-java
package examples;
import java.io.File;
import com.twocaptcha.TwoCaptcha;
import com.twocaptcha.captcha.Coordinates;
public class CoordinatesOptionsExample {
public static void main(String[] args) {
TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY");
Coordinates captcha = new Coordinates();
captcha.setFile("path/to/captcha.jpg");
captcha.setLang("en");
try {
solver.solve(captcha);
System.out.println("Captcha solved: " + captcha.getCode());
} catch (Exception e) {
System.out.println("Error occurred: " + e.getMessage());
}
}
}
C#
// https://github.com/2captchacom/2captcha-csharp
using System;
using System.IO;
using System.Linq;
using TwoCaptcha.Captcha;
namespace TwoCaptcha.Examples {
public class CoordinatesOptionsExample {
public void Main() {
TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY");
Coordinates captcha = new Coordinates();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetLang("en");
try
{
solver.Solve(captcha).Wait();
Console.WriteLine("Captcha solved: " + captcha.Code);
}
catch (AggregateException e)
{
Console.WriteLine("Error occurred: " + e.InnerExceptions.First().Message);
}
}
}
}
Go
// https://github.com/2captchacom/2captcha-go
package main
import (
"fmt"
"log"
"github.com/2captcha/2captcha-go"
)
func main() {
client := api2captcha.NewClient("API_KEY")
cap := api2captcha.Coordinates{
File: "path/to/captcha.jpg",
Lang: "en",
}
code, err := client.Solve(cap.ToRequest())
if err != nil {
log.Fatal(err);
}
fmt.Println("code "+code)
}
C++
// https://github.com/2captchacom/2captcha-cpp
#include <cstdio>
#include "curl_http.hpp"
#include "api2captcha.hpp"
int main (int ac, char ** av)
{
if (ac < 2)
{
printf ("Usage: ./coordinates path/to/image.jpg\n");
return 0;
}
api2captcha::curl_http_t http;
http.set_verbose (true);
api2captcha::client_t client;
client.set_http_client (&http);
client.set_api_key (API_KEY);
assert (ac > 1);
api2captcha::coordinates_t cap (av[1]);
try
{
client.solve (cap);
printf ("code '%s'\n", cap.code ().c_str ());
}
catch (std::exception & e)
{
fprintf (stderr, "Failed: %s\n", e.what ());
}
return 0;
}
手動:
2.1 マルチパートのサンプルフォーム:
```html
<form method="post" action="https://{{ hostname }}/in.php" enctype="multipart/form-data">
<input type="hidden" name="method" value="post">
<input type="hidden" name="coordinatescaptcha" value="1">
Your key:
<input type="text" name="key" value="YOUR_APIKEY">
ClickCaptcha file:
<input type="file" name="file">
<input type="submit" value="Upload and get the ID">
</form>
```
2.2 何も問題がなければ、サーバーはCAPTCHAのIDを返します。
`OK|2122988149`
それ以外の場合、サーバーはエラーコードを返します。
2.3 5 秒後にGETリクエストを送信して結果を取得します。
`GET https://{{ hostname }}/res.php?key=YOUR_API_KEY&action=get&id=2122988149`
CAPTCHAがすでに解決済みの場合、サーバーは回答トークンで応答します。
`OK|coordinates:x=127,y=69;x=131,y=207;x=133,y=133`
CAPTCHAが未解決の場合、サーバーは「CAPCHA_NOT_READY」の結果を返します。この場合、5 秒以内にリクエストを繰り返してください。何か問題が発生した場合、サーバーは エラーコード を返します。
3 デベロッパーコンソールで、name="answer"
のinput
を見つけて、そこに受け取ったコードを貼り付けます。次に、「確認」ボタンをクリックします。
Discussion