anti_captcha 2.2.2 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 12cd907f440f2218170c3b2ddfe61d140c19b4da58c62f9998aa772c58a38ef8
4
- data.tar.gz: cf69837b0cbc5fc593c756a57536ccbb2b5876c2c5c380bc61f798f6c4d4be9e
3
+ metadata.gz: 714b5c0e2058c2056e0b0a0fcdf41c0c07147f29b690bbf49132cc7ffbca976e
4
+ data.tar.gz: 3c7942ec7d1a4a747a53fa690be368466e84ce0e9baefe9877a6fb33a4d034bb
5
5
  SHA512:
6
- metadata.gz: 652ff3b4be305495b84f793a2049e65fa67af2a5614d2e80c1ec69a25a9817727c83c6511c1fc762319f406fd03457f6316cb2e356d598b5bd79743717c851ce
7
- data.tar.gz: 1ab34d03b69a5964ac1cdbf73337aeb60524b303b403a1fd81542a1722c441a2ae045c9e2303b20c5c601f5e8cf15ccd7849fd0b046df3b8e23cb348e993cf18
6
+ metadata.gz: db68e12ba53274a19e85a0babc1236a640b59c844b5e87781afdda0f3648e98fb3c64e37047f21a4a7443e5a6d5533347b5d9aad9de172651d782568b22abd52
7
+ data.tar.gz: 8001df4b7668af35346bc00fcde615f369b5ae38b87b31f59704ff60c68028d4113c553b7c90258801cf3c7a3dfd358b6fc5c1f220d66fada7f1f9c31374f529
data/README.md CHANGED
@@ -74,10 +74,17 @@ Or install it yourself as:
74
74
  5. **Get current stats of a queue.**
75
75
 
76
76
  Queue IDs:
77
- - `1` Standart ImageToText, English language.
78
- - `2` Standart ImageToText, Russian language.
79
- - `5` Recaptcha NoCaptcha tasks.
80
- - `6` Recaptcha Proxyless task.
77
+ - `1` Standart ImageToText, English language.
78
+ - `2` Standart ImageToText, Russian language.
79
+ - `5` Recaptcha NoCaptcha tasks.
80
+ - `6` Recaptcha Proxyless task.
81
+ - `7` Funcaptcha task.
82
+ - `10` Funcaptcha Proxyless task.
83
+ - `18` Recaptcha V3 s0.3
84
+ - `19` Recaptcha V3 s0.7
85
+ - `20` Recaptcha V3 s0.9
86
+ - `21` hCaptcha Proxy-On
87
+ - `22` hCaptcha Proxyless
81
88
 
82
89
  ```ruby
83
90
  client.get_queue_stats!(queue_id)
@@ -171,6 +178,29 @@ Or install it yourself as:
171
178
  "1JJHJ_VuuHAqJKxcaasbTsqw-L1Sm4gD57PTeaEr9-MaETG1vfu2H5zlcwkjsRoZoHxx6V9yUDw8Ig-hYD8kakmSnnjNQd50w_Y_tI3aDLp-s_7ZmhH6pcaoWWsid5hdtMXyvrP9DscDuCLBf7etLle8caPWSaYCpAq9DOTtj5NpSg6-OeCJdGdkjsakFUMeGeqmje87wSajcjmdjl_w4XZBY2zy8fUH6XoAGZ6AeCTulIljBQDObQynKDd-rutPvKNxZasDk-LbhTfw508g1lu9io6jnvm3kbAdnkfZ0x0PkGiUMHU7hnuoW6bXo2Yn_Zt5tDWL7N7wFtY6B0k7cTy73f8er508zReOuoyz2NqL8smDCmcJu05ajkPGt20qzpURMwHaw"
172
179
  ```
173
180
 
181
+ 9. **hCaptcha**
182
+
183
+ This method allows you to solve hCaptcha.
184
+
185
+ There are two methods available:
186
+
187
+ - `decode_h_captcha`: solves hCaptcha CAPTCHAs. It doesn't raise exceptions.
188
+ - `decode_h_captcha!`: solves hCaptcha CAPTCHAs. It may raise an error if something goes wrong.
189
+
190
+ **Send the `website_key` and `website_url` parameters**
191
+
192
+ This method requires no browser emulation. You can send two parameters that
193
+ identify the website in which the CAPTCHA is found.
194
+
195
+ ```ruby
196
+ options = {
197
+ website_key: 'xyz',
198
+ website_url: 'http://example.com/example=1'
199
+ }
200
+
201
+ solution = client.decode_h_captcha!(options)
202
+ solution.g_recaptcha_response # Solution of the captcha
203
+ ```
174
204
 
175
205
  ## Notes
176
206
 
@@ -36,6 +36,7 @@ require 'anti_captcha/models/image_to_text_solution'
36
36
  require 'anti_captcha/models/no_captcha_solution'
37
37
  require 'anti_captcha/models/recaptcha_v3_solution'
38
38
  require 'anti_captcha/models/fun_captcha_solution'
39
+ require 'anti_captcha/models/h_captcha_solution'
39
40
  require 'anti_captcha/models/task_result'
40
41
  require 'anti_captcha/client'
41
42
  require 'anti_captcha/version'
@@ -4,8 +4,8 @@ module AntiCaptcha
4
4
  #
5
5
  class Client
6
6
  BASE_URL = 'https://api.anti-captcha.com/:action'
7
- PROXYABLE_TASKS = %w(NoCaptchaTask FunCaptchaTask)
8
- SUPPORTED_TASKS = %w(ImageToTextTask NoCaptchaTask FunCaptchaTask)
7
+ PROXYABLE_TASKS = %w(NoCaptchaTask FunCaptchaTask HCaptchaTask)
8
+ SUPPORTED_TASKS = %w(ImageToTextTask NoCaptchaTask FunCaptchaTask HCaptchaTask)
9
9
 
10
10
  attr_accessor :client_key, :timeout, :polling
11
11
 
@@ -167,6 +167,42 @@ module AntiCaptcha
167
167
  AntiCaptcha::FunCaptchaSolution.new(task_result)
168
168
  end
169
169
 
170
+ #
171
+ # Decodes a HCaptcha CAPTCHA.
172
+ #
173
+ # @see `AntiCaptcha::Client#decode_h_captcha!`
174
+ #
175
+ def decode_h_captcha(options, proxy = nil)
176
+ decode_h_captcha!(options, proxy)
177
+ rescue
178
+ AntiCaptcha::HCaptchaSolution.new
179
+ end
180
+
181
+ #
182
+ # Decodes a HCaptcha CAPTCHA.
183
+ #
184
+ # @param [Hash] options Options hash.
185
+ # @option options [String] :website_url
186
+ # @option options [String] :website_key
187
+ #
188
+ # @param [Hash] proxy Not mandatory. A hash with configs of the proxy that
189
+ # has to be used. Defaults to `nil`.
190
+ # @option proxy [String] :proxy_type
191
+ # @option proxy [String] :proxy_address
192
+ # @option proxy [String] :proxy_port
193
+ # @option proxy [String] :proxy_login
194
+ # @option proxy [String] :proxy_login
195
+ # @option proxy [String] :proxy_password
196
+ # @option proxy [String] :user_agent
197
+ #
198
+ # @return [AntiCaptcha::HCaptchaSolution] The solution of the HCaptcha.
199
+ #
200
+ def decode_h_captcha!(options, proxy = nil)
201
+ task = create_task!('HCaptchaTask', options, proxy)
202
+ task_result = get_task_result!(task['taskId'])
203
+ AntiCaptcha::HCaptchaSolution.new(task_result)
204
+ end
205
+
170
206
  # Creates a task for solving the selected CAPTCHA type.
171
207
  #
172
208
  # @param [String] type The type of the CAPTCHA.
@@ -249,10 +285,17 @@ module AntiCaptcha
249
285
  websitePublicKey: options[:website_public_key],
250
286
  }
251
287
 
288
+ when 'HCaptchaTask'
289
+ args[:task] = {
290
+ type: 'HCaptchaTask',
291
+ websiteURL: options[:website_url],
292
+ websiteKey: options[:website_key],
293
+ }
294
+
252
295
  else
253
296
  message = "Invalid task type: '#{type}'. Allowed types: " +
254
297
  "#{SUPPORTED_TASKS.join(', ')}"
255
- raise AntiCaptcha.raise_error(message)
298
+ raise AntiCaptcha::ArgumentError.new(message)
256
299
  end
257
300
 
258
301
  if PROXYABLE_TASKS.include?(type)
@@ -281,7 +324,7 @@ module AntiCaptcha
281
324
  # @return [Hash] Information about the task.
282
325
  #
283
326
  def get_task_result!(task_id)
284
- raise AntiCaptcha.raise_error('taskId not received from Anti Captcha.') unless task_id
327
+ raise AntiCaptcha::Error.new('taskId not received from Anti Captcha.') unless task_id
285
328
 
286
329
  started_at = Time.now
287
330
 
@@ -317,6 +360,11 @@ module AntiCaptcha
317
360
  # 6 - Recaptcha Proxyless task.
318
361
  # 7 - Funcaptcha task.
319
362
  # 10 - Funcaptcha Proxyless task.
363
+ # 18 - Recaptcha V3 s0.3
364
+ # 19 - Recaptcha V3 s0.7
365
+ # 20 - Recaptcha V3 s0.9
366
+ # 21 - hCaptcha Proxy-On
367
+ # 22 - hCaptcha Proxyless
320
368
  #
321
369
  # @return [Hash] Information about the queue.
322
370
  #
@@ -0,0 +1,13 @@
1
+ module AntiCaptcha
2
+ class HCaptchaSolution < AntiCaptcha::Solution
3
+ attr_accessor :g_recaptcha_response
4
+
5
+ def initialize(task_result = nil)
6
+ super
7
+
8
+ if task_result
9
+ @g_recaptcha_response = task_result.api_result['solution']['gRecaptchaResponse']
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,4 +1,4 @@
1
1
  module AntiCaptcha
2
- VERSION = "2.2.2"
2
+ VERSION = "2.3.0"
3
3
  USER_AGENT = "AntiCaptcha/Ruby v#{VERSION}"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anti_captcha
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Infosimples
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-30 00:00:00.000000000 Z
11
+ date: 2020-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -75,6 +75,7 @@ files:
75
75
  - lib/anti_captcha/errors.rb
76
76
  - lib/anti_captcha/http.rb
77
77
  - lib/anti_captcha/models/fun_captcha_solution.rb
78
+ - lib/anti_captcha/models/h_captcha_solution.rb
78
79
  - lib/anti_captcha/models/image_to_text_solution.rb
79
80
  - lib/anti_captcha/models/no_captcha_solution.rb
80
81
  - lib/anti_captcha/models/recaptcha_v3_solution.rb