two_captcha 1.2.0 → 1.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
  SHA1:
3
- metadata.gz: b2779681253ef270666b343ac55f430b790229a1
4
- data.tar.gz: e02d828d5a7af4d3707ff246f8fbadf85ad012c1
3
+ metadata.gz: 29bc40bcdecf08c3315a97224e2dbc0b7308f737
4
+ data.tar.gz: f16d6172e691101d63534746c83da27d109abdb0
5
5
  SHA512:
6
- metadata.gz: 7b5c68c961ebd3f92dfd265ec3489ae772430fcf16b51f6486adcd46befc360c0e0ad6adbd034734500afedc24728210cc7a1fe3b6da8b9c02ee503636087e0a
7
- data.tar.gz: 67dc5d2753dc923afc74ef5b30f10b950488d1c76f2440e129c083a3b385afe72b0aed30baa42afb748bb78b1f68ec9729ee6c290a82b80ef5e2b56c7b26cc82
6
+ metadata.gz: 36c9c2bd793aba1dda0b4ce7414ab2b56ae5193c314714f6b2b33f22cec13ecc8ffbf29ac0fb997b866890079b3131b316a26c5a05274bc300e55d93072f6573
7
+ data.tar.gz: 0d7d9a545bdfa066e551031a824129635ca4b4f2639de54204bb2d7d2beeb8a9fc40b93e51bc1eba051836534b68ead71a595dff9be271300b1b6aa327710de3
data/README.md CHANGED
@@ -98,9 +98,34 @@ Or install it yourself as:
98
98
 
99
99
  ## Clickable CAPTCHAs (e.g. "No CAPTCHA reCAPTCHA")
100
100
 
101
- To solve captchas similar to
102
- [reCAPTCHA v2](https://support.google.com/recaptcha/?hl=en#6262736), you can add
103
- the param `coordinatescaptcha: 1` to your request.
101
+ There are two ways of solving captchas similar to
102
+ [reCAPTCHA v2](https://support.google.com/recaptcha/?hl=en#6262736).
103
+
104
+ ### (Prefered) Sending the `googlekey` and `pageurl` parameters
105
+
106
+ This method requires no browser emulation. You can send two parameters that identify website in which the captcha is found.
107
+
108
+ Please read the oficial documentation at https://2captcha.com/newapi-recaptcha-en for
109
+ more information.
110
+
111
+ ```ruby
112
+ options = {
113
+ googlekey: 'xyz',
114
+ pageurl: 'http://example.com/example=1'
115
+ }
116
+
117
+ client.decode_recaptcha_v2(options)
118
+ ```
119
+
120
+ The response will be a code that validates the form, like the following:
121
+
122
+ ```ruby
123
+ "03AHJ_VuuHAqJKxcTH6sbTsqw-L1Sm4gD57PTeaEr9-MaETG1vfu2H5zlcw0u2KqgjHPiXWwlulOw0Ef82tH6SOSbXdelgkvdDl8HreKFug05zfadw2n-A2HoTgYteVA53Q46VatEcZofa5eKfaWgvrPS-IP1DpV4bnUEG69-VbWAx7fJ-p4rHSxq-ZYesBkk9yYFrAiT_70uSz8lg3iqRImfRW91RIkEq8A5UBn4vABUQvlDV4eoKpeNUKDmHOABHkdsV8_1KEgCbabIwsIuIkN1_hw-Mkg0NRdWuXgNtOWen0Zv65yl6D31yhyLV2s0h3ygQwrpxJpBWs7o_rG2TaVfi0y9S5cYr-YlMTHszvMQCVllf5WAiNAgV28JuAnFH5WqRHqT56Tz6ZVNigIToEzq1tnfuewgmJuyyP_woy_MGRoZoHxx6V9yUDw8Ig-hYD8kakmSnnjNQd50w_Y_tI3aDLp-s_7ZmhH6pcaoWWsid5hdtMXyvrP9DscDuCLBf7etLle8caPWSaYCpAq9DOTtj5NpSg6-OeCJdGdgIPT9Xdbo_dm4pLGZ0CNd5WQcjil_kZN_uErRssv9r8j5SC6tsIPBneQLqqqsg8Hyt9kjIh0N10d6-sFeV3QWw-OuzCrPSNYc-_AxvwaB0GUAOmHDDbj8kKz1oqfdBwJienRm246cbstqdc7uAHHuLWLpt1A5W-56PEbb3Zs-HNo3kcjvlJcfrOVJKW68-G3S635EJ9SBm9GFKzFojEu4-TF9CvYNJKaXY9dDev_TVbBaWpWN2Ctx5hHKRbtD1_g2LsGUTDkpo7wrf4pbAyP34zeMRBI1wrrV12PBKnuafaMjy2KIFLt0LM91uWiBzEC61AiSKKEwP2nydRIyIFGwbLFUMeGeqmje87wSajcjmdjl_w4XZBY2zy8fUH6XoAGZ6AeCTulIljBQDObQynKDd-rutPvKNxZw3sra3yRt9ziDVKKDk-LbhTfw508g1lu9io6jnvm3kbAdnkfZ0x0PkGiUMHU7hnuoW6bXo2Yn_Zt5tDWL7N7wFtY6B0k7cTy73f8er508zReOuoyz2NqL8smDCmcJu05kr5R6OVHfeUszn5OiYeVh8Q_gTMsEf4wdaOsQWGZhWQIS8Vi_6IYzwQsnOtYdI6T8q4IDrQh-9eemVn0gNI6gdyknStQ7DoujdPGt20qzpURMwHaw"
124
+ ```
125
+
126
+ ### Sending the challenge image
127
+
128
+ You can add the param `coordinatescaptcha: 1` to your request.
104
129
 
105
130
  Please read the oficial documentation at https://2captcha.com/en-api-recaptcha for
106
131
  more information.
@@ -118,6 +143,11 @@ more information.
118
143
  The response will be an array containing coordinates where the captcha should be
119
144
  clicked. For the captcha above it should look something like:
120
145
 
146
+ ```ruby
147
+ # captcha.text
148
+ "coordinates:x=50.66999816894531,y=130.3300018310547;x=236.66998291015625,y=328.3299865722656"
149
+ ```
150
+
121
151
  ## Audio reCAPTCHA v2
122
152
 
123
153
  ```ruby
@@ -157,18 +187,13 @@ convertions before calling the API.
157
187
 
158
188
  TwoCaptcha gem uses [Semantic Versioning](http://semver.org/).
159
189
 
160
- #### Ruby versions tested
190
+ #### Tested Ruby versions
161
191
 
162
192
  * MRI 2.2.2
163
193
  * MRI 2.2.0
164
194
  * MRI 2.1.4
165
195
  * MRI 2.0.0
166
196
 
167
- # Maintainers
168
-
169
- * [Marcelo Mita](http://github.com/marcelomita)
170
- * [Rafael Barbolo](http://github.com/barbolo)
171
-
172
197
  ## Contributing
173
198
 
174
199
  1. Fork it ( https://github.com/infosimples/two_captcha/fork )
@@ -78,6 +78,61 @@ module TwoCaptcha
78
78
  decoded_captcha
79
79
  end
80
80
 
81
+ #
82
+ # Solve reCAPTCHA v2.
83
+ #
84
+ # @param [Hash] options Options hash. Check docs for the method decode!.
85
+ #
86
+ # @return [TwoCaptcha::Captcha] The solution of the given captcha.
87
+ #
88
+ def decode_recaptcha_v2(options = {})
89
+ decode_recaptcha_v2!(options)
90
+ rescue TwoCaptcha::Error => ex
91
+ TwoCaptcha::Captcha.new
92
+ end
93
+
94
+ #
95
+ # Solve reCAPTCHA v2.
96
+ #
97
+ # @param [Hash] options Options hash.
98
+ # @option options [String] :googlekey The open key of the site in which recaptcha is installed.
99
+ # @option options [String] :pageurl The URL of the page where the recaptcha is encountered.
100
+ #
101
+ # @return [TwoCaptcha::Captcha] The solution of the given captcha.
102
+ #
103
+ def decode_recaptcha_v2!(options = {})
104
+ started_at = Time.now
105
+
106
+ fail(TwoCaptcha::GoogleKey) if options[:googlekey].empty?
107
+
108
+ payload_in = {
109
+ method: 'userrecaptcha',
110
+ googlekey: options[:googlekey],
111
+ pageurl: options[:pageurl]
112
+ }
113
+
114
+ response_in = request('in', :get, payload_in)
115
+ status, captcha_id = response_in.split('|')
116
+
117
+ payload_res = {
118
+ action: 'get',
119
+ json: '1',
120
+ id: captcha_id
121
+ }
122
+
123
+ response_res = request('res', :get, payload_res)
124
+ result = JSON.load(response_res)
125
+
126
+ while ['CAPCHA_NOT_READY', 'CAPTCHA_NOT_READY'].include? result['request']
127
+ sleep(polling)
128
+ response_res = request('res', :get, payload_res)
129
+ result = JSON.load(response_res)
130
+ fail TwoCaptcha::Timeout if (Time.now - started_at) > timeout
131
+ end
132
+
133
+ result['request']
134
+ end
135
+
81
136
  # Upload a captcha to 2Captcha.
82
137
  #
83
138
  # This method will not return the solution. It helps on separating concerns.
@@ -98,6 +98,12 @@ module TwoCaptcha
98
98
  end
99
99
  end
100
100
 
101
+ class GoogleKey < Error
102
+ def initialize
103
+ super('Missing googlekey parameter')
104
+ end
105
+ end
106
+
101
107
  RESPONSE_ERRORS = {
102
108
  'ERROR_WRONG_USER_KEY' => TwoCaptcha::WrongUserKey,
103
109
  'ERROR_KEY_DOES_NOT_EXIST' => TwoCaptcha::InvalidUserKey,
@@ -111,6 +117,7 @@ module TwoCaptcha
111
117
  'IP_BANNED' => TwoCaptcha::IpBanned,
112
118
  'ERROR_WRONG_ID_FORMAT' => TwoCaptcha::WrongIdFormat,
113
119
  'ERROR_CAPTCHA_UNSOLVABLE' => TwoCaptcha::CaptchaUnsolvable,
114
- 'ERROR_EMPTY_ACTION' => TwoCaptcha::EmptyAction
120
+ 'ERROR_EMPTY_ACTION' => TwoCaptcha::EmptyAction,
121
+ 'ERROR_GOOGLEKEY' => TwoCaptcha::GoogleKey
115
122
  }
116
123
  end
@@ -1,4 +1,4 @@
1
1
  module TwoCaptcha
2
- VERSION = '1.2.0'
2
+ VERSION = '1.3.0'
3
3
  USER_AGENT = "TwoCaptcha/Ruby v#{VERSION}"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: two_captcha
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcelo Mita
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-05-24 00:00:00.000000000 Z
12
+ date: 2017-01-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -105,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
105
  version: '0'
106
106
  requirements: []
107
107
  rubyforge_project:
108
- rubygems_version: 2.4.3
108
+ rubygems_version: 2.5.1
109
109
  signing_key:
110
110
  specification_version: 4
111
111
  summary: Ruby API for 2Captcha (Captcha Solver as a Service)