ruby-2captcha 1.1.4 → 1.1.6
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/Gemfile.lock +5 -5
- data/README.md +256 -75
- data/README.ru.md +288 -80
- data/api_2captcha.gemspec +3 -0
- data/examples/atb_captcha_example.rb +11 -0
- data/examples/audio_example.rb +10 -0
- data/examples/grid_captcha_example.rb +14 -0
- data/examples/media/example.mp3 +0 -0
- data/examples/media/normal_2.jpg +0 -0
- data/examples/media/recaptchaGrid4x4.jpg +0 -0
- data/examples/media/recaptchaGridImginstructions4x4.jpg +0 -0
- data/examples/normal_captcha_example.rb +9 -0
- data/examples/recaptcha_v2_example.rb +10 -0
- data/examples/tencent_example.rb +10 -0
- data/lib/api_2captcha/client.rb +31 -7
- data/lib/api_2captcha/version.rb +1 -1
- metadata +16 -2
data/README.ru.md
CHANGED
@@ -1,51 +1,72 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
-
|
8
|
-
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
- [
|
17
|
-
- [
|
18
|
-
|
19
|
-
- [
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
- [
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
1
|
+
<a href="https://github.com/2captcha/2captcha-python"><img src="https://github.com/user-attachments/assets/37e1d860-033b-4cf3-a158-468fc6b4debc" width="82" height="30"></a>
|
2
|
+
<a href="https://github.com/2captcha/2captcha-javascript"><img src="https://github.com/user-attachments/assets/4d3b4541-34b2-4ed2-a687-d694ce67e5a6" width="36" height="30"></a>
|
3
|
+
<a href="https://github.com/2captcha/2captcha-go"><img src="https://github.com/user-attachments/assets/ab22182e-6cb2-41fa-91f4-d5e89c6d7c6f" width="63" height="30"></a>
|
4
|
+
<a href="https://github.com/2captcha/2captcha-ruby"><img src="https://github.com/user-attachments/assets/1c3b6dc2-9acd-44fe-927d-31de3427639f" width="75" height="30"></a>
|
5
|
+
<a href="https://github.com/2captcha/2captcha-cpp"><img src="https://github.com/user-attachments/assets/36de8512-acfd-44fb-bb1f-b7c793a3f926" width="45" height="30"></a>
|
6
|
+
<a href="https://github.com/2captcha/2captcha-php"><img src="https://github.com/user-attachments/assets/e8797843-3f61-4fa9-a155-ab0b21fb3858" width="52" height="30"></a>
|
7
|
+
<a href="https://github.com/2captcha/2captcha-java"><img src="https://github.com/user-attachments/assets/a3d923f6-4fec-4c07-ac50-e20da6370911" width="50" height="30"></a>
|
8
|
+
<a href="https://github.com/2captcha/2captcha-csharp"><img src="https://github.com/user-attachments/assets/f4d449de-780b-49ed-bb0a-b70c82ec4b32" width="38" height="30"></a>
|
9
|
+
|
10
|
+
# Ruby 2Captcha API Client (captcha solver)
|
11
|
+
|
12
|
+
Это самый простой способ быстро интегрировать [2Captcha] в ваш код и автоматизировать решение любого типа капчи.
|
13
|
+
Примеры API-запросов для различных типов капч доступны на странице [Ruby captcha solver](https://2captcha.com/lang/ruby).
|
14
|
+
|
15
|
+
- [Ruby 2Captcha API Client (captcha solver)](#ruby-2captcha-api-client-captcha-solver)
|
16
|
+
- [Установка](#установка)
|
17
|
+
- [Настройка](#настройка)
|
18
|
+
- [Опции экземпляра клиента](#опции-экземпляра-клиента)
|
19
|
+
- [Решение капчи](#решение-капчи)
|
20
|
+
- [Обычная капча](#обычная-капча)
|
21
|
+
- [Текстовая капча](#текстовая-капча)
|
22
|
+
- [reCAPTCHA v2](#recaptcha-v2)
|
23
|
+
- [reCAPTCHA v3](#recaptcha-v3)
|
24
|
+
- [FunCaptcha](#funcaptcha)
|
25
|
+
- [GeeTest](#geetest)
|
26
|
+
- [GeeTest V4](#geetest-v4)
|
27
|
+
- [KeyCaptcha](#keycaptcha)
|
28
|
+
- [Capy](#capy)
|
29
|
+
- [Grid](#grid)
|
30
|
+
- [Canvas](#canvas)
|
31
|
+
- [ClickCaptcha](#clickcaptcha)
|
32
|
+
- [Rotate](#rotate)
|
33
|
+
- [Amazon WAF](#amazon-waf)
|
34
|
+
- [Cloudflare Turnstile](#cloudflare-turnstile)
|
35
|
+
- [Lemin Cropped Captcha](#lemin-cropped-captcha)
|
36
|
+
- [Распознавание аудио](#распознавание-аудио)
|
37
|
+
- [CyberSiARA](#cybersiara)
|
38
|
+
- [DataDome](#datadome)
|
39
|
+
- [MTCaptcha](#mtcaptcha)
|
40
|
+
- [Friendly captcha](#friendly-captcha)
|
41
|
+
- [Cutcaptcha](#cutcaptcha)
|
42
|
+
- [Tencent](#tencent)
|
43
|
+
- [atbCAPTCHA](#atbcaptcha)
|
44
|
+
- [Другие методы](#другие-методы)
|
45
|
+
- [send / get_result](#send--get_result)
|
46
|
+
- [Баланс](#баланс)
|
47
|
+
- [Отчет](#отчет)
|
48
|
+
- [Прокси](#прокси)
|
49
|
+
- [Обработка ошибок](#обработка-ошибок)
|
50
|
+
- [Примеры](#примеры)
|
51
|
+
- [Свяжитесь с нами](#свяжитесь-с-нами)
|
52
|
+
- [Присоединяйтесь к команде 👪](#join-the-team)
|
53
|
+
- [Лицензия](#лицензия)
|
54
|
+
- [Графика и товарные знаки](#графика-и-товарные-знаки)
|
37
55
|
|
38
56
|
## Установка
|
39
57
|
Автоматическая установка гема с помощью Bundler. Добавьте следующую строку в ваш Gemfile:
|
58
|
+
|
40
59
|
```ruby
|
41
60
|
gem 'ruby-2captcha'
|
42
61
|
```
|
43
62
|
Затем выполните следующую команду в терминале:
|
63
|
+
|
44
64
|
```ruby
|
45
65
|
bundle install
|
46
66
|
```
|
47
67
|
|
48
68
|
Или установите его самостоятельно, выполнив следующую команду в терминале:
|
69
|
+
|
49
70
|
```ruby
|
50
71
|
gem install ruby-2captcha
|
51
72
|
```
|
@@ -56,15 +77,15 @@ gem install ruby-2captcha
|
|
56
77
|
|
57
78
|
Описание всех необходимых параметров для настройки установленного гема.
|
58
79
|
|
59
|
-
Экземпляр класса Api2Captcha можно создать следующим образом:
|
80
|
+
Экземпляр класса `Api2Captcha` можно создать следующим образом:
|
60
81
|
|
61
82
|
```ruby
|
62
83
|
require 'api_2captcha'
|
63
84
|
|
64
85
|
client = Api2Captcha.new("YOUR_API_KEY")
|
65
86
|
```
|
66
|
-
|
67
|
-
У вас также есть возможность настроить некоторые параметры экземпляра Api2Captcha
|
87
|
+
### Опции экземпляра клиента
|
88
|
+
У вас также есть возможность настроить некоторые параметры экземпляра `Api2Captcha`:
|
68
89
|
|
69
90
|
```ruby
|
70
91
|
client.soft_id(123)
|
@@ -74,29 +95,36 @@ client.default_timeout(120)
|
|
74
95
|
client.polling_interval(10)
|
75
96
|
```
|
76
97
|
|
77
|
-
|
98
|
+
> [!IMPORTANT]
|
99
|
+
> После определения обратного вызова для экземпляра, все методы возвращают только идентификатор капчи и НЕ запрашивают результат у API. Результат будет отправлен на URL обратного вызова.
|
100
|
+
|
101
|
+
Чтобы получить ответ вручную, используйте метод [get_result](#send--get_result).
|
78
102
|
|
79
103
|
## Решение капчи
|
80
|
-
При отправке любой капчи, основанной на изображении, вы можете предоставить дополнительные параметры, чтобы помочь работникам 2Captcha правильно
|
104
|
+
При отправке любой капчи, основанной на изображении, вы можете предоставить дополнительные параметры, чтобы помочь работникам 2Captcha правильно её решить.
|
81
105
|
|
82
106
|
### Параметры капчи
|
83
107
|
|
84
|
-
| Параметр
|
85
|
-
|
86
|
-
| numeric | 0 | Определяет, содержит ли капча числа или другие символы [подробнее см. в документации по API](https://2captcha.com/2captcha-api#
|
87
|
-
| min_len | 0 |
|
88
|
-
| max_len | 0 | Максимальная длина ответа length
|
89
|
-
| phrase | 0 | Определяет, содержит ли ответ несколько слов или нет
|
90
|
-
| case_sensitive | 0 | Определяет, учитывается ли регистр в ответе
|
91
|
-
| calc | 0 | Определяет, требуется ли вычисление в решении капчи
|
108
|
+
| Параметр | Значение по умолчанию | Описание |
|
109
|
+
|-------------------|---------------|--------------------------------------------------------------------------------------------------------------------|
|
110
|
+
| numeric | 0 | Определяет, содержит ли капча числа или другие символы [подробнее см. в документации по API](https://2captcha.com/2captcha-api#solving_normal_captcha) |
|
111
|
+
| min_len | 0 | Минимальная длина ответа length |
|
112
|
+
| max_len | 0 | Максимальная длина ответа length |
|
113
|
+
| phrase | 0 | Определяет, содержит ли ответ несколько слов или нет |
|
114
|
+
| case_sensitive | 0 | Определяет, учитывается ли регистр в ответе |
|
115
|
+
| calc | 0 | Определяет, требуется ли вычисление в решении капчи |
|
92
116
|
| lang | - | Определяет язык капчи, см. [список поддерживаемых языков](https://2captcha.com/2captcha-api#language) |
|
93
|
-
| hint_image | - | Изображение с подсказкой, показываемое работникам с капчей, переведенное из параметра API instructionsimg
|
94
|
-
| hint_text | - | Подсказка или текст задания, показываемые работникам с капчей
|
117
|
+
| hint_image | - | Изображение с подсказкой, показываемое работникам с капчей, переведенное из параметра API instructionsimg |
|
118
|
+
| hint_text | - | Подсказка или текст задания, показываемые работникам с капчей |
|
95
119
|
|
96
120
|
Ниже вы найдете основные примеры для каждого типа капчи. Ознакомьтесь с кодом ниже.
|
97
121
|
|
98
122
|
### Обычная капча
|
123
|
+
|
124
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#solving_normal_captcha)</sup>
|
125
|
+
|
99
126
|
Для обхода обычной капчи (искаженный текст на картинке) используйте следующий метод. Этот метод также может использоваться для распознавания любого текста на картинке.
|
127
|
+
|
100
128
|
```ruby
|
101
129
|
result = client.normal({ image: 'path/to/captcha.jpg'})
|
102
130
|
# OR
|
@@ -106,7 +134,11 @@ result = client.normal({
|
|
106
134
|
```
|
107
135
|
|
108
136
|
### Текстовая капча
|
137
|
+
|
138
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#solving_text_captcha)</sup>
|
139
|
+
|
109
140
|
Этот метод может использоваться для обхода капчи, которая требует ответить на вопрос, представленный в явном виде.
|
141
|
+
|
110
142
|
```ruby
|
111
143
|
result = client.text({
|
112
144
|
textcaptcha:'Если завтра суббота, то какой сегодня день?',
|
@@ -114,8 +146,12 @@ result = client.text({
|
|
114
146
|
})
|
115
147
|
```
|
116
148
|
|
117
|
-
###
|
118
|
-
|
149
|
+
### reCAPTCHA v2
|
150
|
+
|
151
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#solving_recaptchav2_new)</sup>
|
152
|
+
|
153
|
+
Используйте этот метод для решения reCAPTCHA v2 и получения токена для обхода защиты.
|
154
|
+
|
119
155
|
```ruby
|
120
156
|
result = client.recaptcha_v2({
|
121
157
|
googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
|
@@ -124,8 +160,12 @@ result = client.recaptcha_v2({
|
|
124
160
|
})
|
125
161
|
```
|
126
162
|
|
127
|
-
###
|
128
|
-
|
163
|
+
### reCAPTCHA v3
|
164
|
+
|
165
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#solving_recaptchav3)</sup>
|
166
|
+
|
167
|
+
Этот метод предоставляет решение для reCAPTCHA v3 и возвращает токен.
|
168
|
+
|
129
169
|
```ruby
|
130
170
|
result = client.recaptcha_v3({
|
131
171
|
googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
|
@@ -137,7 +177,11 @@ result = client.recaptcha_v3({
|
|
137
177
|
```
|
138
178
|
|
139
179
|
### FunCaptcha
|
180
|
+
|
181
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#solving_funcaptcha_new)</sup>
|
182
|
+
|
140
183
|
Метод решения FunCaptcha (Arkoselabs). Он возвращает токен.
|
184
|
+
|
141
185
|
```ruby
|
142
186
|
result = client.funcaptcha({
|
143
187
|
publickey: "69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC",
|
@@ -146,7 +190,11 @@ result = client.funcaptcha({
|
|
146
190
|
```
|
147
191
|
|
148
192
|
### GeeTest
|
193
|
+
|
194
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#solving_geetest)</sup>
|
195
|
+
|
149
196
|
Метод для решения головоломки GeeTest captcha. Он возвращает набор токенов в формате JSON.
|
197
|
+
|
150
198
|
```ruby
|
151
199
|
result = client.geetest({
|
152
200
|
gt: 'f1ab2cdefa3456789012345b6c78d90e',
|
@@ -156,17 +204,26 @@ result = client.geetest({
|
|
156
204
|
})
|
157
205
|
```
|
158
206
|
|
159
|
-
###
|
160
|
-
|
207
|
+
### GeeTest v4
|
208
|
+
|
209
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#geetest-v4)</sup>
|
210
|
+
|
211
|
+
Используйте этот метод для решения GeeTest v4. Он возвращает ответ в формате JSON.
|
212
|
+
|
161
213
|
```ruby
|
162
|
-
result = client.
|
163
|
-
|
214
|
+
result = client.geetest_v4({
|
215
|
+
captcha_id: 'e392e1d7fd421dc63325744d5a2b9c73',
|
164
216
|
pageurl: 'https://www.site.com/page/'
|
165
217
|
})
|
166
218
|
```
|
167
219
|
|
220
|
+
|
168
221
|
### KeyCaptcha
|
222
|
+
|
223
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#solving_keycaptcha)</sup>
|
224
|
+
|
169
225
|
Метод на основе токенов для решения KeyCaptcha.
|
226
|
+
|
170
227
|
```ruby
|
171
228
|
result = client.keycaptcha({
|
172
229
|
s_s_c_user_id: 10,
|
@@ -178,7 +235,11 @@ result = client.keycaptcha({
|
|
178
235
|
```
|
179
236
|
|
180
237
|
### Capy
|
238
|
+
|
239
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#solving_capy)</sup>
|
240
|
+
|
181
241
|
Метод основан на использовании токенов для обхода паззла Capy.
|
242
|
+
|
182
243
|
```ruby
|
183
244
|
result = client.capy({
|
184
245
|
sitekey: 'PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v',
|
@@ -188,21 +249,29 @@ result = client.capy({
|
|
188
249
|
```
|
189
250
|
|
190
251
|
### Grid
|
252
|
+
|
253
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#grid)</sup>
|
254
|
+
|
191
255
|
Метод сетки изначально называется методом Old ReCaptcha V2. Этот метод может быть использован для обхода любого типа капчи, где вы можете применить сетку к изображению и необходимо кликнуть по определенным ячейкам сетки. Он возвращает количество выбранных ячеек.
|
256
|
+
|
192
257
|
```ruby
|
193
258
|
result = client.grid({
|
194
259
|
image: 'path/to/captcha.jpg',
|
195
|
-
|
196
|
-
|
260
|
+
recaptcharows: 3,
|
261
|
+
recaptchacols: 3,
|
197
262
|
previous_id: 0,
|
198
263
|
lang: 'en',
|
199
|
-
|
200
|
-
|
264
|
+
imginstructions: 'path/to/hint.jpg',
|
265
|
+
textinstructions: 'Select all images with an Orange'
|
201
266
|
})
|
202
267
|
```
|
203
268
|
|
204
269
|
### Canvas
|
270
|
+
|
271
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#canvas)</sup>
|
272
|
+
|
205
273
|
Метод Canvas может быть использован, когда вам необходимо нарисовать линию вокруг объекта на изображении. Он возвращает набор координат точек для рисования многоугольника.
|
274
|
+
|
206
275
|
```ruby
|
207
276
|
result = client.canvas({
|
208
277
|
image: 'path/to/captcha.jpg',
|
@@ -214,7 +283,11 @@ result = client.canvas({
|
|
214
283
|
```
|
215
284
|
|
216
285
|
### ClickCaptcha
|
286
|
+
|
287
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#coordinates)</sup>
|
288
|
+
|
217
289
|
Метод ClickCaptcha возвращает координаты точек на изображении капчи. Может быть использован, если вам необходимо кликнуть по определенным точкам на изображении.
|
290
|
+
|
218
291
|
```ruby
|
219
292
|
result = client.coordinates({
|
220
293
|
image: 'path/to/captcha.jpg',
|
@@ -225,7 +298,11 @@ result = client.coordinates({
|
|
225
298
|
```
|
226
299
|
|
227
300
|
### Rotate
|
301
|
+
|
302
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#solving_rotatecaptcha)</sup>
|
303
|
+
|
228
304
|
Этот метод может быть использован для решения капчи, которая просит повернуть объект. В основном используется для обхода FunCaptcha. Он возвращает угол поворота.
|
305
|
+
|
229
306
|
```ruby
|
230
307
|
result = client.rotate({
|
231
308
|
image: 'path/to/captcha.jpg',
|
@@ -236,8 +313,13 @@ result = client.rotate({
|
|
236
313
|
})
|
237
314
|
```
|
238
315
|
|
316
|
+
|
239
317
|
### Lemin Cropped Captcha
|
240
|
-
|
318
|
+
|
319
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#lemin)</sup>
|
320
|
+
|
321
|
+
Используйте этот метод для решения задания Lemin. Он возвращает JSON-ответ с указанными значениями: ответ (answer) и идентификатор задания (challenge_id).
|
322
|
+
|
241
323
|
```ruby
|
242
324
|
result = client.lemin({
|
243
325
|
captcha_id: 'CROPPED_1abcd2f_a1234b567c890d12ef3a456bc78d901d',
|
@@ -247,8 +329,13 @@ result = client.lemin({
|
|
247
329
|
})
|
248
330
|
```
|
249
331
|
|
332
|
+
|
250
333
|
### Cloudflare Turnstile
|
334
|
+
|
335
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#turnstile)</sup>
|
336
|
+
|
251
337
|
Используйте этот метод для решения задачи Cloudflare Turnstile. Он возвращает JSON с токеном.
|
338
|
+
|
252
339
|
```ruby
|
253
340
|
result = client.turnstile({
|
254
341
|
sitekey: '0x1AAAAAAAAkg0s2VIOD34y5',
|
@@ -257,7 +344,11 @@ result = client.turnstile({
|
|
257
344
|
```
|
258
345
|
|
259
346
|
### Amazon WAF
|
347
|
+
|
348
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#amazon-waf)</sup>
|
349
|
+
|
260
350
|
Используйте этот метод для решения Captcha Amazon WAF, также известного как AWS WAF Captcha, который является частью интеллектуальной защиты от угроз для Amazon AWS. Он возвращает JSON с токеном.
|
351
|
+
|
261
352
|
```ruby
|
262
353
|
result = client.amazon_waf({
|
263
354
|
sitekey: '0x1AAAAAAAAkg0s2VIOD34y5',
|
@@ -269,26 +360,27 @@ result = client.amazon_waf({
|
|
269
360
|
})
|
270
361
|
```
|
271
362
|
|
272
|
-
###
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
```
|
363
|
+
### Распознавание аудио
|
364
|
+
|
365
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#audio)</sup>
|
366
|
+
|
367
|
+
Этот метод можно использовать как для решения аудио капчи, так и для распознавания любой аудиозаписи.
|
368
|
+
|
369
|
+
Поддерживаемые языки: "en", "ru", "de", "el", "pt", "fr".
|
280
370
|
|
281
|
-
### Audio
|
282
|
-
Этот метод можно использовать для решения аудио-капчи.
|
283
371
|
```ruby
|
284
372
|
result = client.audio({
|
285
|
-
audio: 'path/to/audio.
|
373
|
+
audio: 'path/to/audio.mp3',
|
286
374
|
lang: "en"
|
287
375
|
})
|
288
376
|
```
|
289
377
|
|
290
378
|
### CyberSiARA
|
379
|
+
|
380
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#cybersiara)</sup>
|
381
|
+
|
291
382
|
Метод решения CyberSiARA. Он возвращает токен для обхода капчи.
|
383
|
+
|
292
384
|
```ruby
|
293
385
|
result = client.cyber_siara({
|
294
386
|
pageurl: "https://test.com",
|
@@ -297,8 +389,14 @@ result = client.cyber_siara({
|
|
297
389
|
```
|
298
390
|
|
299
391
|
### DataDome
|
300
|
-
|
301
|
-
|
392
|
+
|
393
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#datadome)</sup>
|
394
|
+
|
395
|
+
Метод решения DataDome вернет `cookies` для обхода капчи.
|
396
|
+
|
397
|
+
> [!IMPORTANT]
|
398
|
+
> Чтобы решить капчу DataDome вы должны обязательно использовать прокси. Рекомендуется использовать [резидентные прокси].
|
399
|
+
|
302
400
|
```ruby
|
303
401
|
result = client.data_dome({
|
304
402
|
pageurl: "https://test.com",
|
@@ -308,8 +406,13 @@ result = client.data_dome({
|
|
308
406
|
})
|
309
407
|
```
|
310
408
|
|
409
|
+
|
311
410
|
### MTCaptcha
|
411
|
+
|
412
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#mtcaptcha)</sup>
|
413
|
+
|
312
414
|
Метод решения MTCaptcha. Он возвращает токен для обхода капчи.
|
415
|
+
|
313
416
|
```ruby
|
314
417
|
result = client.mt_captcha({
|
315
418
|
pageurl: "https://service.mtcaptcha.com/mtcv1/demo/index.html",
|
@@ -317,19 +420,68 @@ result = client.mt_captcha({
|
|
317
420
|
})
|
318
421
|
```
|
319
422
|
|
423
|
+
|
320
424
|
### Friendly captcha
|
425
|
+
|
426
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#friendly-captcha)</sup>
|
427
|
+
|
321
428
|
Метод решения Friendly captcha. Он возвращает токен для обхода капчи.
|
429
|
+
|
430
|
+
> [!IMPORTANT]
|
431
|
+
> Чтобы успешно использовать полученный токен, виджет капчи не должен быть загружен на странице. Для этого необходимо прервать запрос к `/friendlycaptcha/...module.min.js` на странице. Если виджет капчи уже загружен на странице, существует высокая вероятность, что полученный токен не будет работать.
|
432
|
+
|
322
433
|
```ruby
|
323
|
-
result = client.
|
434
|
+
result = client.friendly({
|
324
435
|
pageurl: "https://example.com",
|
325
436
|
sitekey: "2FZFEVS1FZCGQ9"
|
326
437
|
})
|
327
438
|
```
|
328
439
|
|
440
|
+
### Cutcaptcha
|
441
|
+
|
442
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#cutcaptcha)</sup>
|
443
|
+
|
444
|
+
Метод решения Cutcaptcha. Он возвращает токен для обхода капчи.
|
445
|
+
|
446
|
+
```ruby
|
447
|
+
result = client.cutcaptcha({
|
448
|
+
misery_key: "a1488b66da00bf332a1488993a5443c79047e752",
|
449
|
+
api_key: "SAb83IIB",
|
450
|
+
pageurl: "https://example.cc/foo/bar.html"
|
451
|
+
})
|
452
|
+
```
|
453
|
+
|
454
|
+
### Tencent
|
455
|
+
|
456
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#tencent)</sup>
|
457
|
+
|
458
|
+
Основанный на токенах метод автоматизированного решения капчи Tencent.
|
459
|
+
```ruby
|
460
|
+
result = client.tencent({
|
461
|
+
app_id: "197326679",
|
462
|
+
pageurl: "https://mysite.com/page/with/tencent"
|
463
|
+
})
|
464
|
+
```
|
465
|
+
|
466
|
+
### atbCAPTCHA
|
467
|
+
|
468
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#atb-captcha)</sup>
|
469
|
+
|
470
|
+
Основанный на токенах метод автоматизированного решения капчи atbCAPTCHA.
|
471
|
+
```ruby
|
472
|
+
result = client.atb_captcha({
|
473
|
+
app_id: "197326679",
|
474
|
+
api_server: "api.atb_captcha.com",
|
475
|
+
pageurl: "https://mysite.com/page/with/atb_captcha"
|
476
|
+
})
|
477
|
+
```
|
478
|
+
|
479
|
+
|
329
480
|
## Другие методы
|
330
481
|
|
331
482
|
### send / get_result
|
332
483
|
Эти методы могут быть использованы для ручного отправления капчи и получения результата.
|
484
|
+
|
333
485
|
```ruby
|
334
486
|
# пример для обычной капчи
|
335
487
|
captcha_id = client.send('path/to/captcha.jpg')
|
@@ -348,22 +500,48 @@ time.sleep(20)
|
|
348
500
|
# Получить готовый результат
|
349
501
|
result = client.get_result(captcha_id)
|
350
502
|
```
|
351
|
-
|
352
503
|
### Баланс
|
504
|
+
|
505
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#additional-methods)</sup>
|
506
|
+
|
353
507
|
Используйте этот метод, чтобы посмотреть баланс в вашем аккаунте.
|
508
|
+
|
354
509
|
```ruby
|
355
510
|
balance = client.get_balance
|
356
511
|
```
|
357
512
|
|
358
513
|
### Отчет
|
514
|
+
|
515
|
+
<sup>[Описание метода API.](https://2captcha.com/2captcha-api#complain)</sup>
|
516
|
+
|
359
517
|
Используйте этот метод для отправки отчета о правильном или неправильном ответе на капчу.
|
518
|
+
|
360
519
|
```ruby
|
361
520
|
client.report(captcha_id, True) # капча решена правильно
|
362
521
|
client.report(captcha_id, False) # капча решена неправильно
|
363
522
|
```
|
364
523
|
|
365
|
-
|
524
|
+
## Прокси
|
525
|
+
|
526
|
+
Вы можете передать свой прокси-сервер в качестве дополнительного аргумента для методов: recaptcha, funcaptcha, geetest, geetest v4, keycaptcha, capy puzzle, lemin, turnstile, amazon waf, Cutcaptcha, Friendly captcha, MTCaptcha, DataDome, CyberSiARA и других. Передынный Прокси-сервер будет перенаправлен в API и будет использован для загрузки капчи.
|
527
|
+
|
528
|
+
У нас есть свои собственные прокси-серверы, которые мы можем вам предложить. [Купить резидентские прокси] чтобы избежать ограничений и блокировок. [Быстрый старт].
|
529
|
+
|
530
|
+
Пример решения reCAPTCHA V2 с использованием прокси-сервера:
|
531
|
+
|
532
|
+
```ruby
|
533
|
+
result = client.recaptcha_v2({
|
534
|
+
googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
|
535
|
+
pageurl: 'https://mysite.com/page/with/recaptcha_v2',
|
536
|
+
invisible: 1,
|
537
|
+
proxytype: "https",
|
538
|
+
proxy: "proxyuser:strongPassword@123.123.123.123:3128"
|
539
|
+
})
|
540
|
+
```
|
541
|
+
|
542
|
+
## Обработка ошибок
|
366
543
|
В случае ошибки при решении капчи генерируется исключение. Важно правильно обрабатывать такие случаи. Мы рекомендуем использовать конструкцию `begin rescue` для обработки.
|
544
|
+
|
367
545
|
```ruby
|
368
546
|
begin
|
369
547
|
result = client.text('Если завтра суббота, то какой сегодня день?')
|
@@ -381,3 +559,33 @@ client.report(captcha_id, False) # капча решена неправильн
|
|
381
559
|
puts(e)
|
382
560
|
end
|
383
561
|
```
|
562
|
+
|
563
|
+
## Примеры
|
564
|
+
|
565
|
+
Примеры решения поддерживаемых типов капчи находятся в директории [examples].
|
566
|
+
|
567
|
+
## Свяжитесь с нами
|
568
|
+
|
569
|
+
<a href="mailto:support@2captcha.com"><img src="https://github.com/user-attachments/assets/539df209-7c85-4fa5-84b4-fc22ab93fac7" width="80" height="30"></a>
|
570
|
+
<a href="https://2captcha.com/support/tickets/new"><img src="https://github.com/user-attachments/assets/be044db5-2e67-46c6-8c81-04b78bd99650" width="81" height="30"></a>
|
571
|
+
|
572
|
+
<h2 id='join-the-team'>Присоединяйтесь к команде 👪</h2>
|
573
|
+
|
574
|
+
Есть много способов внести свой вклад, и разработка - лишь один из них! Найдите свою следующую работу. Открытые вакансии: AI experts, scrapers, developers, technical support, и многое другое! 😍
|
575
|
+
|
576
|
+
<a href="mailto:job@2captcha.com"><img src="https://github.com/user-attachments/assets/36d23ef5-7866-4841-8e17-261cc8a4e033" width="80" height="30"></a>
|
577
|
+
|
578
|
+
## Лицензия
|
579
|
+
|
580
|
+
Код в этом репозитории лицензируется по лицензии MIT. Более подробную информацию см. в файле [LICENSE](./LICENSE).
|
581
|
+
|
582
|
+
### Графика и товарные знаки
|
583
|
+
|
584
|
+
Графика и товарные знаки, включенные в этот репозиторий, не подпадают под действие лицензии MIT. За разрешениями на использование этих материалов обращайтесь в <a href="mailto:support@2captcha.com">службу поддержки</a>.
|
585
|
+
|
586
|
+
<!-- Shared links -->
|
587
|
+
[2Captcha]: https://2captcha.com/
|
588
|
+
[Купить резидентские прокси]: https://2captcha.com/proxy/residential-proxies
|
589
|
+
[Быстрый старт]: https://2captcha.com/proxy?openAddTrafficModal=true
|
590
|
+
[резидентные прокси]: https://2captcha.com/proxy/residential-proxies
|
591
|
+
[examples]: ./examples/
|
data/api_2captcha.gemspec
CHANGED
@@ -18,6 +18,9 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.metadata["source_code_uri"] = "https://github.com/2captcha/2captcha-ruby"
|
19
19
|
spec.metadata["changelog_uri"] = "https://github.com/2captcha/2captcha-ruby/releases"
|
20
20
|
spec.metadata["github_repo"] = "ssh://github.com/2captcha/2captcha-ruby"
|
21
|
+
spec.metadata["bug_tracker_uri"] = "https://github.com/2captcha/2captcha-ruby/issues"
|
22
|
+
spec.metadata["keywords"] = "2captcha, captcha solver, captcha bypass, Ruby, automation, CAPTCHA API, CAPTCHA recognition, anti-captcha, reCAPTCHA, OCR, image recognition, human verification, bot protection, recaptcha"
|
23
|
+
|
21
24
|
|
22
25
|
# Specify which files should be added to the gem when it is released.
|
23
26
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'api_2captcha'
|
2
|
+
|
3
|
+
client = Api2Captcha.new("YOUR_API_KEY")
|
4
|
+
|
5
|
+
result = client.atb_captcha({
|
6
|
+
app_id: "197326679",
|
7
|
+
api_server: "api.atb_captcha.com",
|
8
|
+
pageurl: "https://mysite.com/page/with/atb_captcha"
|
9
|
+
})
|
10
|
+
|
11
|
+
puts "Result: #{result.inspect}"
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'api_2captcha'
|
2
|
+
|
3
|
+
client = Api2Captcha.new("YOUR_API_KEY")
|
4
|
+
|
5
|
+
result = client.grid({
|
6
|
+
image: './media/recaptchaGrid4x4.jpg',
|
7
|
+
rows: 4,
|
8
|
+
cols: 4,
|
9
|
+
lang: 'en',
|
10
|
+
hint_image: './media/recaptchaGridImginstructions4x4.jpg',
|
11
|
+
# hint_text: 'Select all squares with stairs'
|
12
|
+
})
|
13
|
+
|
14
|
+
puts "Result: #{result.inspect}"
|
Binary file
|