ruby-2captcha 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rspec_status +7 -5
- data/Gemfile.lock +1 -1
- data/README.md +46 -12
- data/README.ru.md +338 -0
- data/lib/api_2captcha/client.rb +9 -5
- data/lib/api_2captcha/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 331e841199be9725ada41287e036cdafb5a9ca9ce1754b14b3580ac27a376053
|
4
|
+
data.tar.gz: 93c39616225f3e3ab35c021fbd8473496829797792aa80e5272d0868b1d9884f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 852b9b321840c5e27be438c34c133acd3f81e01073c047ec934266fdb3ca0a0a29ecf31d69ff826206f88d5e505900725a4f83a9071f0925cc8453d984b29d6b
|
7
|
+
data.tar.gz: bcad95da8e13e0257e599f1046d5b54c57af34df1ad1aca2924d611583d9ee168a55f447a813700353b674387dd66e9a1bfdf9260f4b04911eb5173a56c5d0e5
|
data/.rspec_status
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
-
example_id | status | run_time
|
2
|
-
---------------------------------- | ------ |
|
3
|
-
./spec/api_2captcha_spec.rb[1:1] | passed | 0.
|
4
|
-
./spec/api_2captcha_spec.rb[1:2:1] | passed | 0.
|
5
|
-
./spec/api_2captcha_spec.rb[1:3:1] | passed |
|
1
|
+
example_id | status | run_time |
|
2
|
+
---------------------------------- | ------ | --------------------- |
|
3
|
+
./spec/api_2captcha_spec.rb[1:1] | passed | 0.04326 seconds |
|
4
|
+
./spec/api_2captcha_spec.rb[1:2:1] | passed | 0.00121 seconds |
|
5
|
+
./spec/api_2captcha_spec.rb[1:3:1] | passed | 3.15 seconds |
|
6
|
+
./spec/api_2captcha_spec.rb[1:4:1] | passed | 2 minutes 0.2 seconds |
|
7
|
+
./spec/api_2captcha_spec.rb[1:5:1] | passed | 0.26142 seconds |
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -10,8 +10,9 @@ A Ruby client for the 2Captcha API.
|
|
10
10
|
- [Solve captcha](#solve-captcha)
|
11
11
|
- [Normal Captcha](#normal-captcha)
|
12
12
|
- [Text](#text-captcha)
|
13
|
-
- [
|
14
|
-
- [
|
13
|
+
- [reCAPTCHA v2](#recaptcha-v2)
|
14
|
+
- [reCAPTCHA v3](#recaptcha-v3)
|
15
|
+
- [reCAPTCHA Enterprise](#recaptcha-enterprise)
|
15
16
|
- [GeeTest](#geetest)
|
16
17
|
- [hCaptcha](#hcaptcha)
|
17
18
|
- [KeyCaptcha](#keycaptcha)
|
@@ -25,8 +26,9 @@ A Ruby client for the 2Captcha API.
|
|
25
26
|
- [Lemin Cropped Captcha](#lemin-cropped-captcha)
|
26
27
|
- [GeeTest V4](#geetest-v4)
|
27
28
|
- [Audio](#audio)
|
29
|
+
- [Yandex](#yandex)
|
28
30
|
- [Other methods](#other-methods)
|
29
|
-
- [send /
|
31
|
+
- [send / get_result](#send--getresult)
|
30
32
|
- [balance](#balance)
|
31
33
|
- [report](#report)
|
32
34
|
- [Error handling](#error-handling)
|
@@ -71,11 +73,11 @@ client.api_key = "YOUR_API_KEY"
|
|
71
73
|
|---|---|---|
|
72
74
|
|soft_id|-|your software ID obtained after publishing in [2captcha sofware catalog]|
|
73
75
|
|callback|-|URL of your web-sever that receives the captcha recognition result. The URl should be first registered in [pingback settings] of your account|
|
74
|
-
|default_timeout|120|Timeout in seconds for all captcha types except
|
76
|
+
|default_timeout|120|Timeout in seconds for all captcha types except reCAPTCHA. Defines how long the module tries to get the answer from `res.php` API endpoint|
|
75
77
|
|polling_interval|10|Interval in seconds between requests to `res.php` API endpoint, setting values less than 5 seconds is not recommended|
|
76
78
|
|
77
79
|
> **IMPORTANT:** once `callback` is defined for `Client` instance, all methods return only the captcha ID and DO NOT poll the API to get the result. The result will be sent to the callback URL.
|
78
|
-
To get the answer manually use [
|
80
|
+
To get the answer manually use [get_result method](#send--getresult)
|
79
81
|
|
80
82
|
## Solve captcha
|
81
83
|
When you submit any image-based captcha use can provide additional options to help 2captcha workers to solve it properly.
|
@@ -93,7 +95,8 @@ When you submit any image-based captcha use can provide additional options to he
|
|
93
95
|
| hint_image | - | an image with hint shown to workers with the captcha, translated into instructionsimg API parameter |
|
94
96
|
| hint_text | - | hint or task text shown to workers with the captcha |
|
95
97
|
|
96
|
-
Below you can find basic examples for every captcha type
|
98
|
+
Below you can find basic examples for every captcha type, check out the code below.
|
99
|
+
|
97
100
|
|
98
101
|
### Normal Captcha
|
99
102
|
To bypass a normal captcha (distorted text on image) use the following method. This method also can be used to recognize any text on the image.
|
@@ -114,8 +117,8 @@ result = client.text({
|
|
114
117
|
})
|
115
118
|
```
|
116
119
|
|
117
|
-
###
|
118
|
-
Use this method to solve
|
120
|
+
### reCAPTCHA v2
|
121
|
+
Use this method to solve reCAPTCHA V2 and obtain a token to bypass the protection.
|
119
122
|
```ruby
|
120
123
|
result = client.recaptcha_v2({
|
121
124
|
googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
|
@@ -124,8 +127,8 @@ result = client.recaptcha_v2({
|
|
124
127
|
})
|
125
128
|
```
|
126
129
|
|
127
|
-
###
|
128
|
-
This method provides
|
130
|
+
### reCAPTCHA v3
|
131
|
+
This method provides reCAPTCHA V3 solver and returns a token.
|
129
132
|
```ruby
|
130
133
|
result = client.recaptcha_v3({
|
131
134
|
googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
|
@@ -136,6 +139,28 @@ result = client.recaptcha_v3({
|
|
136
139
|
})
|
137
140
|
```
|
138
141
|
|
142
|
+
### reCAPTCHA Enterprise
|
143
|
+
reCAPTCHA Enterprise can be used as reCAPTCHA V2 and reCAPTCHA V3. Below is a usage example for both versions.
|
144
|
+
|
145
|
+
```ruby
|
146
|
+
# reCAPTCHA V2
|
147
|
+
result = client.recaptcha_v2({
|
148
|
+
googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
|
149
|
+
pageurl: 'https://mysite.com/page/with/recaptcha_v2_enterprise',
|
150
|
+
enterprise: 1
|
151
|
+
})
|
152
|
+
|
153
|
+
# reCAPTCHA V3
|
154
|
+
result = client.recaptcha_v3({
|
155
|
+
googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
|
156
|
+
pageurl: 'https://mysite.com/page/with/recaptcha_v3_enterprise',
|
157
|
+
version: 'v3',
|
158
|
+
score: 0.3,
|
159
|
+
action: 'verify',
|
160
|
+
enterprise: 1,
|
161
|
+
})
|
162
|
+
```
|
163
|
+
|
139
164
|
### FunCaptcha
|
140
165
|
FunCaptcha (Arkoselabs) solving method. Returns a token.
|
141
166
|
|
@@ -189,7 +214,7 @@ result = client.capy({
|
|
189
214
|
```
|
190
215
|
|
191
216
|
### Grid
|
192
|
-
Grid method is originally called Old
|
217
|
+
Grid method is originally called Old reCAPTCHA V2 method. The method can be used to bypass any type of captcha where you can apply a grid on image and need to click specific grid boxes. Returns numbers of boxes.
|
193
218
|
```ruby
|
194
219
|
result = client.grid({
|
195
220
|
image: 'path/to/captcha.jpg',
|
@@ -288,9 +313,18 @@ result = client.audio({
|
|
288
313
|
})
|
289
314
|
```
|
290
315
|
|
316
|
+
### Yandex
|
317
|
+
Use this method to solve Yandex and obtain a token to bypass the protection.
|
318
|
+
```ruby
|
319
|
+
result = client.yandex({
|
320
|
+
sitekey: 'Y5Lh0tiycconMJGsFd3EbbuNKSp1yaZESUOIHfeV',
|
321
|
+
url: "https://rutube.ru"
|
322
|
+
})
|
323
|
+
```
|
324
|
+
|
291
325
|
## Other methods
|
292
326
|
|
293
|
-
### send /
|
327
|
+
### send / get_result
|
294
328
|
These methods can be used for manual captcha submission and answer polling.
|
295
329
|
```ruby
|
296
330
|
|
data/README.ru.md
ADDED
@@ -0,0 +1,338 @@
|
|
1
|
+
# Ruby 2Captcha API Client
|
2
|
+
|
3
|
+
Это самый простой способ быстро интегрировать 2Captcha в ваш код и автоматизировать решение любого типа капчи.
|
4
|
+
|
5
|
+
Ruby-клиент для API 2Captcha.
|
6
|
+
|
7
|
+
- [Установка](#installation)
|
8
|
+
- [Настройка](#configuration)
|
9
|
+
- [Опции экземпляра клиента](#client-instance-options)
|
10
|
+
- [Решение капчи](#solve-captcha)
|
11
|
+
- [Обычная капча](#normal-captcha)
|
12
|
+
- [Текстовая капча](#text-captcha)
|
13
|
+
- [ReCaptcha v2](#recaptcha-v2)
|
14
|
+
- [ReCaptcha v3](#recaptcha-v3)
|
15
|
+
- [GeeTest](#geetest)
|
16
|
+
- [hCaptcha](#hcaptcha)
|
17
|
+
- [KeyCaptcha](#keycaptcha)
|
18
|
+
- [Capy](#capy)
|
19
|
+
- [Grid](#grid)
|
20
|
+
- [Canvas](#canvas)
|
21
|
+
- [ClickCaptcha](#clickcaptcha)
|
22
|
+
- [Rotate](#rotate)
|
23
|
+
- [AmazonWAF](#amazon-waf)
|
24
|
+
- [CloudflareTurnstile](#cloudflare-turnstile)
|
25
|
+
- [Lemin Cropped Captcha](#lemin-cropped-captcha)
|
26
|
+
- [GeeTest V4](#geetest-v4)
|
27
|
+
- [Аудио](#audio)
|
28
|
+
- [Другие методы](#other-methods)
|
29
|
+
- [send / get_result](#send--getresult)
|
30
|
+
- [balance](#balance)
|
31
|
+
- [report](#report)
|
32
|
+
- [Обработка ошибок](#error-handling)
|
33
|
+
|
34
|
+
## Установка
|
35
|
+
|
36
|
+
Автоматическая установка гема с помощью Bundler. Добавьте следующую строку в ваш Gemfile:
|
37
|
+
```ruby
|
38
|
+
gem 'ruby-2captcha'
|
39
|
+
```
|
40
|
+
Затем выполните следующую команду в терминале:
|
41
|
+
```ruby
|
42
|
+
bundle install
|
43
|
+
```
|
44
|
+
|
45
|
+
Или установите его самостоятельно, выполнив следующую команду в терминале:
|
46
|
+
```ruby
|
47
|
+
gem install ruby-2captcha
|
48
|
+
```
|
49
|
+
|
50
|
+
Мы также приглашаем вас ознакомиться с нашим репозиторием на [GitHub](https://github.com/2captcha/), где вы можете найти библиотеки и модули для простой интеграции с нашим API.
|
51
|
+
|
52
|
+
## Настройка
|
53
|
+
|
54
|
+
Описание всех необходимых параметров для настройки установленного гема.
|
55
|
+
|
56
|
+
Экземпляр класса Api2Captcha можно создать следующим образом:
|
57
|
+
```ruby
|
58
|
+
client = Api2Captcha.new("YOUR_API_KEY")
|
59
|
+
```
|
60
|
+
|
61
|
+
У вас также есть возможность настроить некоторые параметры экземпляра Api2Captcha:
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
client.soft_id(123)
|
65
|
+
client.domain("https://rucaptcha.com/")
|
66
|
+
client.callback("https://your.site/result-receiver")
|
67
|
+
client.default_timeout(120)
|
68
|
+
client.polling_interval(10)
|
69
|
+
```
|
70
|
+
|
71
|
+
**ВАЖНО**: после определения обратного вызова для экземпляра , все методы возвращают только идентификатор капчи и НЕ запрашивают результат у API. Результат будет отправлен на URL обратного вызова. Чтобы получить ответ вручную, используйте метод get_result.
|
72
|
+
|
73
|
+
## Решение капчи
|
74
|
+
При отправке любой капчи, основанной на изображении, вы можете предоставить дополнительные параметры, чтобы помочь работникам 2Captcha правильно ее решить.
|
75
|
+
|
76
|
+
### Параметры капчи
|
77
|
+
|
78
|
+
| Параметр | Значение по умолчанию | Описание |
|
79
|
+
|-------------------|---------------|-------------------------------------------------------------------------------------------------------------------------------|
|
80
|
+
| numeric | 0 | Определяет, содержит ли капча числа или другие символы [подробнее см. в документации по API](https://2captcha.com/2captcha-api#normal_post) |
|
81
|
+
| min_len | 0 | Минимальная длина ответа length |
|
82
|
+
| max_len | 0 | Максимальная длина ответа length |
|
83
|
+
| phrase | 0 | Определяет, содержит ли ответ несколько слов или нет |
|
84
|
+
| case_sensitive | 0 | Определяет, учитывается ли регистр в ответе |
|
85
|
+
| calc | 0 | Определяет, требуется ли вычисление в решении капчи |
|
86
|
+
| lang | - | Определяет язык капчи, см. [список поддерживаемых языков](https://2captcha.com/2captcha-api#language) |
|
87
|
+
| hint_image | - | Изображение с подсказкой, показываемое работникам с капчей, переведенное из параметра API instructionsimg |
|
88
|
+
| hint_text | - | Подсказка или текст задания, показываемые работникам с капчей |
|
89
|
+
|
90
|
+
Ниже вы найдете основные примеры для каждого типа капчи. Ознакомьтесь с кодом ниже.
|
91
|
+
|
92
|
+
### Обычная капча
|
93
|
+
Для обхода обычной капчи (искаженный текст на картинке) используйте следующий метод. Этот метод также может использоваться для распознавания любого текста на картинке.
|
94
|
+
```ruby
|
95
|
+
result = client.normal({ image: 'path/to/captcha.jpg'})
|
96
|
+
# OR
|
97
|
+
result = client.normal({
|
98
|
+
image: 'https://site-with-captcha.com/path/to/captcha.jpg'
|
99
|
+
})
|
100
|
+
```
|
101
|
+
|
102
|
+
### Текстовая капча
|
103
|
+
Этот метод может использоваться для обхода капчи, которая требует ответить на вопрос, представленный в явном виде.
|
104
|
+
```ruby
|
105
|
+
result = client.text({
|
106
|
+
textcaptcha:'Если завтра суббота, то какой сегодня день?',
|
107
|
+
lang: "ru"
|
108
|
+
})
|
109
|
+
```
|
110
|
+
|
111
|
+
### ReCaptcha v2
|
112
|
+
Используйте этот метод для решения ReCaptcha V2 и получения токена для обхода защиты.
|
113
|
+
```ruby
|
114
|
+
result = client.recaptcha_v2({
|
115
|
+
googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
|
116
|
+
pageurl: 'https://mysite.com/page/with/recaptcha_v2',
|
117
|
+
invisible: 1
|
118
|
+
})
|
119
|
+
```
|
120
|
+
|
121
|
+
### ReCaptcha v3
|
122
|
+
Этот метод предоставляет решение для ReCaptcha V3 и возвращает токен.
|
123
|
+
```ruby
|
124
|
+
result = client.recaptcha_v3({
|
125
|
+
googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
|
126
|
+
pageurl: 'https://mysite.com/page/with/recaptcha_v3',
|
127
|
+
version: 'v3',
|
128
|
+
score: 0.3,
|
129
|
+
action: 'verify'
|
130
|
+
})
|
131
|
+
```
|
132
|
+
|
133
|
+
### FunCaptcha
|
134
|
+
Метод решения FunCaptcha (Arkoselabs). Он возвращает токен.
|
135
|
+
```ruby
|
136
|
+
result = client.funcaptcha({
|
137
|
+
publickey: "69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC",
|
138
|
+
pageurl: "https://mysite.com/page/with/funcaptcha",
|
139
|
+
surl: "https://client-api.arkoselabs.com"})
|
140
|
+
```
|
141
|
+
|
142
|
+
### GeeTest
|
143
|
+
Метод для решения головоломки GeeTest captcha. Он возвращает набор токенов в формате JSON.
|
144
|
+
```ruby
|
145
|
+
result = client.geetest({
|
146
|
+
gt: 'f1ab2cdefa3456789012345b6c78d90e',
|
147
|
+
api_server: 'api-na.geetest.com',
|
148
|
+
challenge: '12345678abc90123d45678ef90123a456b',
|
149
|
+
pageurl: 'https://www.site.com/page/'
|
150
|
+
})
|
151
|
+
```
|
152
|
+
|
153
|
+
### hCaptcha
|
154
|
+
Метод решения hCaptcha. Он возвращает токен для обхода капчи.
|
155
|
+
```ruby
|
156
|
+
result = client.hcaptcha({
|
157
|
+
sitekey: '10000000-ffff-ffff-ffff-000000000001',
|
158
|
+
pageurl: 'https://www.site.com/page/'
|
159
|
+
})
|
160
|
+
```
|
161
|
+
|
162
|
+
### KeyCaptcha
|
163
|
+
Метод на основе токенов для решения KeyCaptcha.
|
164
|
+
```ruby
|
165
|
+
result = client.keycaptcha({
|
166
|
+
s_s_c_user_id: 10,
|
167
|
+
s_s_c_session_id: '493e52c37c10c2bcdf4a00cbc9ccd1e8',
|
168
|
+
s_s_c_web_server_sign: '9006dc725760858e4c0715b835472f22-pz-',
|
169
|
+
s_s_c_web_server_sign2: '2ca3abe86d90c6142d5571db98af6714',
|
170
|
+
pageurl: 'https://www.keycaptcha.ru/demo-magnetic/'
|
171
|
+
})
|
172
|
+
```
|
173
|
+
|
174
|
+
### Capy
|
175
|
+
Метод основан на использовании токенов для обхода паззла Capy.
|
176
|
+
```ruby
|
177
|
+
result = client.capy({
|
178
|
+
sitekey: 'PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v',
|
179
|
+
pageurl: 'http://mysite.com/',
|
180
|
+
api_server: 'https://jp.api.capy.me/'
|
181
|
+
})
|
182
|
+
```
|
183
|
+
|
184
|
+
### Grid
|
185
|
+
Метод сетки изначально называется методом Old ReCaptcha V2. Этот метод может быть использован для обхода любого типа капчи, где вы можете применить сетку к изображению и необходимо кликнуть по определенным ячейкам сетки. Он возвращает количество выбранных ячеек.
|
186
|
+
```ruby
|
187
|
+
result = client.grid({
|
188
|
+
image: 'path/to/captcha.jpg',
|
189
|
+
rows: 3,
|
190
|
+
cols: 3,
|
191
|
+
previous_id: 0,
|
192
|
+
lang: 'en',
|
193
|
+
hint_image: 'path/to/hint.jpg',
|
194
|
+
hint_text: 'Select all images with an Orange'
|
195
|
+
})
|
196
|
+
```
|
197
|
+
|
198
|
+
### Canvas
|
199
|
+
Метод Canvas может быть использован, когда вам необходимо нарисовать линию вокруг объекта на изображении. Он возвращает набор координат точек для рисования многоугольника.
|
200
|
+
```ruby
|
201
|
+
result = client.canvas({
|
202
|
+
image: 'path/to/captcha.jpg',
|
203
|
+
previous_id: 0,
|
204
|
+
lang: 'en',
|
205
|
+
hint_image: 'path/to/hint.jpg',
|
206
|
+
hint_text: 'Draw around apple'
|
207
|
+
})
|
208
|
+
```
|
209
|
+
|
210
|
+
### ClickCaptcha
|
211
|
+
Метод ClickCaptcha возвращает координаты точек на изображении капчи. Может быть использован, если вам необходимо кликнуть по определенным точкам на изображении.
|
212
|
+
```ruby
|
213
|
+
result = client.coordinates({
|
214
|
+
image: 'path/to/captcha.jpg',
|
215
|
+
lang: 'en',
|
216
|
+
hint_image: 'path/to/hint.jpg',
|
217
|
+
hint_text: 'Connect the dots'
|
218
|
+
})
|
219
|
+
```
|
220
|
+
|
221
|
+
### Rotate
|
222
|
+
Этот метод может быть использован для решения капчи, которая просит повернуть объект. В основном используется для обхода FunCaptcha. Он возвращает угол поворота.
|
223
|
+
```ruby
|
224
|
+
result = client.rotate({
|
225
|
+
image: 'path/to/captcha.jpg',
|
226
|
+
angle: 40,
|
227
|
+
lang: 'en',
|
228
|
+
hint_image: 'path/to/hint.jpg',
|
229
|
+
hint_text: 'Put the images in the correct way'
|
230
|
+
})
|
231
|
+
```
|
232
|
+
|
233
|
+
### Lemin Cropped Captcha
|
234
|
+
Используйте этот метод для решения задания hCaptcha. Он возвращает JSON-ответ с указанными значениями: ответ (answer) и идентификатор задания (challenge_id).
|
235
|
+
```ruby
|
236
|
+
result = client.lemin({
|
237
|
+
captcha_id: 'CROPPED_1abcd2f_a1234b567c890d12ef3a456bc78d901d',
|
238
|
+
div_id: 'lemin-cropped-captcha',
|
239
|
+
pageurl: 'https://www.site.com/page/',
|
240
|
+
api_server: "https://api.leminnow.com/"
|
241
|
+
})
|
242
|
+
```
|
243
|
+
|
244
|
+
### Cloudflare Turnstile
|
245
|
+
Используйте этот метод для решения задачи Cloudflare Turnstile. Он возвращает JSON с токеном.
|
246
|
+
```ruby
|
247
|
+
result = client.turnstile({
|
248
|
+
sitekey: '0x1AAAAAAAAkg0s2VIOD34y5',
|
249
|
+
pageurl: 'http://mysite.com/'
|
250
|
+
})
|
251
|
+
```
|
252
|
+
|
253
|
+
### Amazon WAF
|
254
|
+
Используйте этот метод для решения Captcha Amazon WAF, также известного как AWS WAF Captcha, который является частью интеллектуальной защиты от угроз для Amazon AWS. Он возвращает JSON с токеном.
|
255
|
+
```ruby
|
256
|
+
result = client.amazon_waf({
|
257
|
+
sitekey: '0x1AAAAAAAAkg0s2VIOD34y5',
|
258
|
+
iv: 'CgAHbCe2GgAAAAAj',
|
259
|
+
context: '9BUgmlm48F92WUoqv97a49ZuEJJ50TCk9MVr3C7WMtQ0X6flVbufM4n8mjFLmbLVAPgaQ1Jydeaja94iAS49ljb+sUNLoukWedAQZKrlY4RdbOOzvcFqmD/ZepQFS9N5w15Exr4VwnVq+HIxTsDJwRviElWCdzKDebN/mk8/eX2n7qJi5G3Riq0tdQw9+C4diFZU5E97RSeahejOAAJTDqduqW6uLw9NsjJBkDRBlRjxjn5CaMMo5pYOxYbGrM8Un1JH5DMOLeXbq1xWbC17YSEoM1cRFfTgOoc+VpCe36Ai9Kc=',
|
260
|
+
pageurl: 'https://non-existent-example.execute-api.us-east-1.amazonaws.com/latest',
|
261
|
+
challenge_script: "https://41bcdd4fb3cb.610cd090.us-east-1.token.awswaf.com/41bcdd4fb3cb/0d21de737ccb/cd77baa6c832/challenge.js",
|
262
|
+
captcha_script: "https://41bcdd4fb3cb.610cd090.us-east-1.captcha.awswaf.com/41bcdd4fb3cb/0d21de737ccb/cd77baa6c832/captcha.js"
|
263
|
+
})
|
264
|
+
```
|
265
|
+
|
266
|
+
### GeeTest v4
|
267
|
+
Используйте этот метод для решения GeeTest v4. Он возвращает ответ в формате JSON.
|
268
|
+
```ruby
|
269
|
+
result = client.geetest_v4({
|
270
|
+
captcha_id: 'e392e1d7fd421dc63325744d5a2b9c73',
|
271
|
+
pageurl: 'https://www.site.com/page/'
|
272
|
+
})
|
273
|
+
```
|
274
|
+
|
275
|
+
### Audio
|
276
|
+
Этот метод можно использовать для решения аудио-капчи.
|
277
|
+
```ruby
|
278
|
+
result = client.audio({
|
279
|
+
audio: 'path/to/audio.jpg',
|
280
|
+
lang: "en"
|
281
|
+
})
|
282
|
+
```
|
283
|
+
|
284
|
+
## Другие методы
|
285
|
+
|
286
|
+
### send / get_result
|
287
|
+
Эти методы могут быть использованы для ручного отправления капчи и получения результата.
|
288
|
+
```ruby
|
289
|
+
# пример для обычной капчи
|
290
|
+
captcha_id = client.send('path/to/captcha.jpg')
|
291
|
+
|
292
|
+
# или для любой другой капчи
|
293
|
+
captcha_id = client.send({
|
294
|
+
method:"lemin",
|
295
|
+
captcha_id: "CROPPED_3dfdd5c_d1872b526b794d83ba3b365eb15a200b",
|
296
|
+
api_server: "api.leminnow.com",
|
297
|
+
div_id: "lemin-cropped-captcha",
|
298
|
+
pageurl: "https://www.site.com/page/"
|
299
|
+
})
|
300
|
+
|
301
|
+
time.sleep(20)
|
302
|
+
|
303
|
+
# Получить готовый результат
|
304
|
+
result = client.get_result(captcha_id)
|
305
|
+
```
|
306
|
+
|
307
|
+
### Баланс
|
308
|
+
Используйте этот метод, чтобы посмотреть баланс в вашем аккаунте.
|
309
|
+
```ruby
|
310
|
+
balance = client.get_balance
|
311
|
+
```
|
312
|
+
|
313
|
+
### Отчет
|
314
|
+
Используйте этот метод для отправки отчета о правильном или неправильном ответе на капчу.
|
315
|
+
```ruby
|
316
|
+
client.report(captcha_id, True) # капча решена правильно
|
317
|
+
client.report(captcha_id, False) # капча решена неправильно
|
318
|
+
```
|
319
|
+
|
320
|
+
### Обработка ошибок
|
321
|
+
В случае ошибки при решении капчи генерируется исключение. Важно правильно обрабатывать такие случаи. Мы рекомендуем использовать конструкцию `begin rescue` для обработки.
|
322
|
+
```ruby
|
323
|
+
begin
|
324
|
+
result = client.text('Если завтра суббота, то какой сегодня день?')
|
325
|
+
rescue Api2Captcha::ValidationException => e
|
326
|
+
# переданы недопустимые параметры
|
327
|
+
puts(e)
|
328
|
+
rescue Api2Captcha::NetworkException => e
|
329
|
+
# возникла сетевая ошибка
|
330
|
+
puts(e)
|
331
|
+
rescue Api2Captcha::ApiException => e
|
332
|
+
# ошибка ответа от API
|
333
|
+
puts(e)
|
334
|
+
rescue Api2Captcha::TimeoutException => e
|
335
|
+
# капча до сих пор не решена
|
336
|
+
puts(e)
|
337
|
+
end
|
338
|
+
```
|
data/lib/api_2captcha/client.rb
CHANGED
@@ -31,16 +31,16 @@ class Api2Captcha::Client
|
|
31
31
|
params["key"] = @api_key
|
32
32
|
params["soft_id"] = @soft_id
|
33
33
|
params["json"] = 1
|
34
|
+
|
34
35
|
if @callback
|
35
36
|
params["pingback"] = @callback
|
36
37
|
return_id = true
|
37
|
-
else
|
38
|
-
return_id
|
39
38
|
end
|
39
|
+
|
40
40
|
complete_params = get_params(params)
|
41
41
|
captcha_id = send_request(complete_params)
|
42
|
-
|
43
|
-
|
42
|
+
return captcha_id if return_id
|
43
|
+
get_result(captcha_id)
|
44
44
|
end
|
45
45
|
|
46
46
|
def send(*args)
|
@@ -132,7 +132,7 @@ class Api2Captcha::Client
|
|
132
132
|
|
133
133
|
def grid(params)
|
134
134
|
params["recaptcha"] = 1
|
135
|
-
solve("
|
135
|
+
solve("post", params)
|
136
136
|
end
|
137
137
|
|
138
138
|
def canvas(params)
|
@@ -178,6 +178,10 @@ class Api2Captcha::Client
|
|
178
178
|
solve("audio", params)
|
179
179
|
end
|
180
180
|
|
181
|
+
def yandex(params)
|
182
|
+
solve("yandex", params)
|
183
|
+
end
|
184
|
+
|
181
185
|
private
|
182
186
|
|
183
187
|
def base_url
|
data/lib/api_2captcha/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-2captcha
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 2captcha.com
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Ruby package for easy integration with the API of 2captcha captcha solving
|
14
14
|
service to bypass recaptcha, hcaptcha, funcaptcha, geetest and solve any other captchas.
|
@@ -26,6 +26,7 @@ files:
|
|
26
26
|
- Gemfile.lock
|
27
27
|
- LICENSE
|
28
28
|
- README.md
|
29
|
+
- README.ru.md
|
29
30
|
- Rakefile
|
30
31
|
- api_2captcha.gemspec
|
31
32
|
- lib/api_2captcha.rb
|