two_captcha 1.7.0 → 1.9.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: 9d9f28e64ed32b2c3bb8973f14bea2dbb15828550806d0306e6bdbdf07815562
4
- data.tar.gz: eaa46657370a298929c7e5f49104abb3f696a74cddeddb8f1052a1f3c2140b8d
3
+ metadata.gz: b9ebd0f5784ffc3348f29f9abcd82e31f6298d6dc959557c204b41aeb19aae31
4
+ data.tar.gz: 4e5f0abecd976ea5cd4385bfffda6469a3dd8ba2b79f32bf81299488b9b39571
5
5
  SHA512:
6
- metadata.gz: cc567f2ecf5c0771e1b1ca7cade9c44a33abe2a224256132d2d8326798b998f5b8750fdbb489995c320a705f68ed7d9bb685450c87174c71389d987eb06258a0
7
- data.tar.gz: dac73380663bc6471b233db9b30a6d2be296b27fa92131a3beaf54f7a155d503658c7ad53accf1e500eb50704413bd9af931793f6ccc200251dce157f5dbe1f3
6
+ metadata.gz: 349f83ce8ce70a30289fac68c9b171bd6e256b189435d5a6802179551ef3e536baf342d9d02e541ffe9c469ca0c3ca86b6ac9f3ab5d96a57a4b4116727d78bee
7
+ data.tar.gz: acfc725708ace49701cacf0dd465db438d3a3749b76d3c85f7691b828f201728094eeb6ec43db424e654e2a364118586c18655a65d0f24378d112b55fe66d51f
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
- Developed by [Infosimples](https://infosimples.com).
2
-
3
1
  # TwoCaptcha
4
2
 
5
- TwoCaptcha is a Ruby API for 2Captcha - [2Captcha.com](http://2captcha.com/?from=1025109).
3
+ TwoCaptcha is a Ruby API for 2Captcha - [2Captcha.com](http://2captcha.com/?from=1025109)
6
4
 
7
5
  ## Installation
8
6
 
@@ -14,264 +12,212 @@ gem 'two_captcha'
14
12
 
15
13
  And then execute:
16
14
 
17
- $ bundle
15
+ ```bash
16
+ $ bundle
17
+ ````
18
18
 
19
19
  Or install it yourself as:
20
20
 
21
- $ gem install two_captcha
21
+ ```bash
22
+ $ gem install two_captcha
23
+ ````
22
24
 
23
25
  ## Usage
24
26
 
25
- 1. **Create a client**
26
-
27
- ```ruby
28
- # Create a client
29
- client = TwoCaptcha.new('my_captcha_key')
30
- ```
31
-
32
- 2. **Solve a captcha**
33
-
34
- There are two methods available: **decode** and **decode!**
35
- * **decode** doesn't raise exceptions.
36
- * **decode!** may raise a *TwoCaptcha::Error* if something goes wrong.
37
-
38
- If the solution is not available, an empty captcha object will be returned.
39
-
40
- ```ruby
41
- captcha = client.decode!(url: 'http://bit.ly/1xXZcKo')
42
- captcha.text # Solution of the captcha
43
- captcha.id # Numeric ID of the captcha solved by TwoCaptcha
44
- ```
45
-
46
- You can also specify *path*, *file*, *raw* and *raw64* when decoding an image.
27
+ ### 1. Create a client
47
28
 
48
- ```ruby
49
- client.decode(path: 'path/to/my/captcha/file')
50
-
51
- client.decode(file: File.open('path/to/my/captcha/file', 'rb'))
52
-
53
- client.decode(raw: File.open('path/to/my/captcha/file', 'rb').read)
54
-
55
- client.decode(raw64: Base64.encode64(File.open('path/to/my/captcha/file', 'rb').read))
56
- ```
57
-
58
- > Internally, the gem will always convert the image to raw64 (binary base64 encoded).
59
-
60
- You may also specify any POST parameters specified at
61
- https://2captcha.com/setting.
62
-
63
- 3. **Retrieve a previously solved captcha**
64
-
65
- ```ruby
66
- captcha = client.captcha('130920620') # with 130920620 as the captcha id
67
- ```
68
-
69
- 4. **Report incorrectly (for refund) or correctly (useful for reCAPTCHA v3) solved captcha**
70
-
71
- ```ruby
72
- client.report!('130920620', 'reportbad') # with 130920620 as the captcha id
73
- # return true if successfully reported
74
-
75
- client.report!('256892751', 'reportgood') # with 256892751 as the captcha id
76
- # return true if successfully reported
77
- ```
29
+ ```ruby
30
+ client = TwoCaptcha.new('my_key')
31
+ ```
78
32
 
79
- > ***Warning:*** *do not abuse on this method, otherwise you may get banned*
33
+ ### 2. Solve a CAPTCHA
80
34
 
81
- 5. **Get your balance on 2Captcha**
35
+ There are two types of methods available: `decode` and `decode!`:
82
36
 
83
- ```ruby
84
- client.balance
85
- # return a Float balance in USD.
86
- ```
37
+ - `decode` does not raise exceptions.
38
+ - `decode!` may raise a `TwoCaptcha::Error` if something goes wrong.
87
39
 
88
- 6. **Get usage statistics for a specific date**
40
+ If the solution is not available, an empty solution object will be returned.
89
41
 
90
- ```ruby
91
- client.stats('2015-08-05')
92
- # return an XML string with your usage statistics.
93
- ```
42
+ ```ruby
43
+ captcha = client.decode_image!(url: 'http://bit.ly/1xXZcKo')
44
+ captcha.text # CAPTCHA solution
45
+ captcha.id # CAPTCHA numeric id
46
+ ```
94
47
 
95
- 7. **Get current 2Captcha load**
48
+ #### Image CAPTCHA
96
49
 
97
- ```ruby
98
- client.load
99
- # return an XML string with the current service load.
100
- ```
50
+ You can specify `file`, `path`, `raw`, `raw64` and `url` when decoding an image.
101
51
 
102
- ## reCAPTCHA v2 (e.g. "No CAPTCHA reCAPTCHA")
52
+ ```ruby
53
+ client.decode_image!(file: File.open('path/to/my/captcha/file', 'rb'))
54
+ client.decode_image!(path: 'path/to/my/captcha/file')
55
+ client.decode_image!(raw: File.open('path/to/my/captcha/file', 'rb').read)
56
+ client.decode_image!(raw64: Base64.encode64(File.open('path/to/my/captcha/file', 'rb').read))
57
+ client.decode_image!(url: 'http://bit.ly/1xXZcKo')
58
+ ```
103
59
 
104
- There are two ways of solving captchas similar to
105
- [reCAPTCHA v2](https://support.google.com/recaptcha/?hl=en#6262736).
60
+ You may also specify any POST parameters specified at https://2captcha.com/setting.
106
61
 
107
- ### (Prefered) Sending the `googlekey` and `pageurl` parameters
62
+ #### reCAPTCHA v2
108
63
 
109
- This method requires no browser emulation. You can send two parameters that
110
- identify the website in which the captcha is found.
64
+ ```ruby
65
+ captcha = client.decode_recaptcha_v2!(
66
+ googlekey: 'xyz',
67
+ pageurl: 'http://example.com/example=1',
68
+ )
111
69
 
112
- Please read the [oficial documentation](https://2captcha.com/newapi-recaptcha-en)
113
- for more information.
70
+ # The response will be a text (token), which you can access with the `text` method.
114
71
 
115
- ```ruby
116
- options = {
117
- googlekey: 'xyz',
118
- pageurl: 'http://example.com/example=1'
119
- }
72
+ captcha.text
73
+ "03AOPBWq_RPO2vLzyk0h8gH0cA2X4v3tpYCPZR6Y4yxKy1s3Eo7CHZRQntxrd..."
74
+ ```
120
75
 
121
- captcha = client.decode_recaptcha_v2(options)
122
- captcha.text # Solution of the captcha
123
- captcha.id # Numeric ID of the captcha solved by TwoCaptcha
124
- ```
76
+ *Parameters:*
125
77
 
126
- The solution (`captcha.text`) will be a code that validates the form, like the
127
- following:
78
+ - `googlekey`: the Google key for the reCAPTCHA.
79
+ - `pageurl`: the URL of the page with the reCAPTCHA challenge.
128
80
 
129
- ```ruby
130
- "1JJHJ_VuuHAqJKxcaasbTsqw-L1Sm4gD57PTeaEr9-MaETG1vfu2H5zlcwkjsRoZoHxx6V9yUDw8Ig-hYD8kakmSnnjNQd50w_Y_tI3aDLp-s_7ZmhH6pcaoWWsid5hdtMXyvrP9DscDuCLBf7etLle8caPWSaYCpAq9DOTtj5NpSg6-OeCJdGdkjsakFUMeGeqmje87wSajcjmdjl_w4XZBY2zy8fUH6XoAGZ6AeCTulIljBQDObQynKDd-rutPvKNxZasDk-LbhTfw508g1lu9io6jnvm3kbAdnkfZ0x0PkGiUMHU7hnuoW6bXo2Yn_Zt5tDWL7N7wFtY6B0k7cTy73f8er508zReOuoyz2NqL8smDCmcJu05ajkPGt20qzpURMwHaw"
131
- ```
132
81
 
133
- ### Sending the challenge image
82
+ #### reCAPTCHA v3
134
83
 
135
- You can add the param `coordinatescaptcha: 1` to your request.
84
+ ```ruby
85
+ captcha = client.decode_recaptcha_v3!(
86
+ googlekey: 'xyz',
87
+ pageurl: 'http://example.com/example=1',
88
+ action: 'verify',
89
+ min_score: 0.3, # OPTIONAL
90
+ )
136
91
 
137
- Please read the oficial documentation at https://2captcha.com/en-api-recaptcha for
138
- more information.
92
+ # The response will be a text (token), which you can access with the `text` method.
139
93
 
140
- ```ruby
141
- client.decode(url: 'http://bit.ly/clickcaptcha', coordinatescaptcha: 1)
142
- ```
94
+ captcha.text
95
+ "03AOPBWq_RPO2vLzyk0h8gH0cA2X4v3tpYCPZR6Y4yxKy1s3Eo7CHZRQntxrd..."
96
+ ```
143
97
 
144
- **Captcha (screenshot)**
98
+ *Parameters:*
145
99
 
146
- > the argument is passed as *url*, *path*, *file*, *raw* or *raw64*
100
+ - `googlekey`: the Google key for the reCAPTCHA.
101
+ - `pageurl`: the URL of the page with the reCAPTCHA challenge.
102
+ - `action`: the action name used by the CAPTCHA.
103
+ - `min_score`: optional parameter. The minimal score needed for the CAPTCHA resolution. Defaults to `0.3`.
147
104
 
148
- ![Example of a captcha based on image clicks](captchas/2.jpg)
105
+ > About the `action` parameter: in order to find out what this is, you need to inspect the JavaScript
106
+ > code of the website looking for a call to the `grecaptcha.execute` function.
107
+ >
108
+ > ```javascript
109
+ > // Example
110
+ > grecaptcha.execute('6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_f', { action: "examples/v3scores" })
111
+ > ````
149
112
 
150
- The response will be an array containing coordinates where the captcha should be
151
- clicked. For the captcha above it should look something like:
113
+ > About the `min_score` parameter: it's strongly recommended to use a minimum score of `0.3` as higher
114
+ > scores are rare.
152
115
 
153
- ```ruby
154
- # captcha.text
155
- "coordinates:x=50.66999816894531,y=130.3300018310547;x=236.66998291015625,y=328.3299865722656"
156
- ```
116
+ #### hCaptcha
157
117
 
158
- ## Audio reCAPTCHA v2
118
+ ```ruby
119
+ captcha = client.decode_hcaptcha!(
120
+ sitekey: 'xyz',
121
+ pageurl: 'http://example.com/example=1',
122
+ )
159
123
 
160
- ```ruby
161
- client.decode(url: 'http://bit.ly/audiorecaptchav2', recaptchavoice: 1)
162
- ```
124
+ captcha.text
125
+ "P0_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNza2V5IjoiNnpWV..."
126
+ ```
163
127
 
164
- The response will be a simple text:
128
+ #### Amazon WAF
165
129
 
166
130
  ```ruby
167
- # captcha.text
168
- '61267'
131
+ captcha = client.decode_amazon_waf!(
132
+ sitekey: 'xyz',
133
+ pageurl: 'http://example.com/example=1',
134
+ iv: 'A1A1A1A1A1A1A1A1',
135
+ context: 'ABcd...',
136
+ challenge_script: 'http://example.com/challenge.js',
137
+ )
138
+
139
+ puts captcha.text
140
+ {"captcha_voucher":"eyJ0...","existing_token":"f2ae6..."}
169
141
  ```
170
142
 
171
- ## reCAPTCHA v3
143
+ *Parameters:*
172
144
 
173
- This method requires no browser emulation. You can send four parameters that
174
- identify the website in which the CAPTCHA is found and the minimum score
175
- (0.3, 0.5 or 0.7) you desire.
145
+ - `website_key`: the site key for the hCatpcha.
146
+ - `website_url`: the URL of the page with the hCaptcha challenge.
176
147
 
177
- **It's strongly recommended to use a minimum score of 0.3 as higher scores are extremely rare.**
148
+ ### 3. Using proxy or other custom options
178
149
 
179
- Please read the [oficial documentation](https://2captcha.com/2captcha-api#solving_recaptchav3)
180
- for more information.
150
+ You are allowed to use custom options like `proxy`, `proxytype` or `userAgent` whenever the
151
+ 2Captcha API supports it. Example:
181
152
 
182
153
  ```ruby
183
154
  options = {
184
- googlekey: 'xyz',
155
+ sitekey: 'xyz',
185
156
  pageurl: 'http://example.com/example=1',
186
- action: 'verify',
187
- min_score: 0.3
157
+ proxy: 'login:password@123.123.123.123:3128',
158
+ userAgent: 'user agent',
188
159
  }
189
160
 
190
- captcha = client.decode_recaptcha_v3(options)
191
- captcha.text # Solution of the captcha
192
- captcha.id # Numeric ID of the captcha solved by TwoCaptcha
193
- ```
194
-
195
- The solution (`captcha.text`) will be a code that validates the form, like the
196
- following:
197
-
198
- ```ruby
199
- "1JJHJ_VuuHAqJKxcaasbTsqw-L1Sm4gD57PTeaEr9-MaETG1vfu2H5zlcwkjsRoZoHxx6V9yUDw8Ig-hYD8kakmSnnjNQd50w_Y_tI3aDLp-s_7ZmhH6pcaoWWsid5hdtMXyvrP9DscDuCLBf7etLle8caPWSaYCpAq9DOTtj5NpSg6-OeCJdGdkjsakFUMeGeqmje87wSajcjmdjl_w4XZBY2zy8fUH6XoAGZ6AeCTulIljBQDObQynKDd-rutPvKNxZasDk-LbhTfw508g1lu9io6jnvm3kbAdnkfZ0x0PkGiUMHU7hnuoW6bXo2Yn_Zt5tDWL7N7wFtY6B0k7cTy73f8er508zReOuoyz2NqL8smDCmcJu05ajkPGt20qzpURMwHaw"
161
+ captcha = client.decode_hcaptcha!(options)
200
162
  ```
201
163
 
202
- ## hCaptcha
203
-
204
- This method allows you to solve hCaptcha.
205
-
206
- There are two methods available:
164
+ ### 4. Retrieve a previously solved CAPTCHA
207
165
 
208
- - `decode_hcaptcha`: solves hCaptcha CAPTCHAs. It doesn't raise exceptions.
209
- - `decode_hcaptcha!`: solves hCaptcha CAPTCHAs. It may raise an error if something goes wrong.
210
-
211
- **Send the `sitekey` and `pageurl` parameters**
166
+ ```ruby
167
+ captcha = client.captcha('130920620') # with 130920620 being the CAPTCHA id
168
+ ```
212
169
 
213
- This method requires no browser emulation. You can send two parameters that
214
- identify the website in which the CAPTCHA is found.
170
+ ### 5. Report an incorrectly solved CAPTCHA for a refund
215
171
 
216
- ```ruby
217
- options = {
218
- sitekey: 'xyz',
219
- pageurl: 'http://example.com/example=1'
220
- }
172
+ ```ruby
173
+ client.report!('130920620', 'reportbad') # with 130920620 being the CAPTCHA id
174
+ # returns `true` if successfully reported
221
175
 
222
- captcha = client.decode_hcaptcha!(options)
223
- captcha.text # Solution of the captcha
224
- ```
176
+ client.report!('256892751', 'reportgood') # with 256892751 being the CAPTCHA id
177
+ # returns `true` if successfully reported
178
+ ```
225
179
 
226
- ## Using proxy or other custom options
180
+ ### 6. Get your account balance
227
181
 
228
- You are allowed to use custom options like `proxy`, `proxytype` or `userAgent` whenever the 2Captcha API supports it. Example:
182
+ ```ruby
183
+ client.balance
184
+ # returns a Float balance in USD.
185
+ ```
229
186
 
230
- ```ruby
231
- options = {
232
- sitekey: 'xyz',
233
- pageurl: 'http://example.com/example=1',
234
- proxy: 'login:password@123.123.123.123:3128',
235
- userAgent: 'user agent'
236
- }
187
+ ### 7. Get usage statistics for a specific date
237
188
 
238
- captcha = client.decode_hcaptcha!(options)
239
- ```
189
+ ```ruby
190
+ client.stats(Date.new(2022, 10, 7))
191
+ # returns an XML string with your usage statistics.
192
+ ```
240
193
 
241
194
  ## Notes
242
195
 
243
- #### Thread-safety
196
+ ### Thread-safety
244
197
 
245
198
  The API is thread-safe, which means it is perfectly fine to share a client
246
199
  instance between multiple threads.
247
200
 
248
- #### Ruby dependencies
201
+ ### Ruby dependencies
249
202
 
250
203
  TwoCaptcha don't require specific dependencies. That saves you memory and
251
204
  avoid conflicts with other gems.
252
205
 
253
- #### Input image format
206
+ ### Input image format
254
207
 
255
- Any format you use in the decode method (url, file, path, raw, raw64) will
256
- always be converted to a raw64, which is a binary base64 encoded string. So, if
257
- you already have this format available on your side, there's no need to do
258
- convertions before calling the API.
208
+ Any format you use in the `decode_image!` method (`url`, `file`, `path`, `raw` or `raw64`)
209
+ will always be converted to a `raw64`, which is a base64-encoded binary string.
210
+ So, if you already have this format on your end, there is no need for convertions
211
+ before calling the API.
259
212
 
260
213
  > Our recomendation is to never convert your image format, unless needed. Let
261
214
  > the gem convert internally. It may save you resources (CPU, memory and IO).
262
215
 
263
- #### Versioning
216
+ ### Versioning
264
217
 
265
218
  TwoCaptcha gem uses [Semantic Versioning](http://semver.org/).
266
219
 
267
- #### Tested Ruby versions
268
-
269
- * MRI 2.2.2
270
- * MRI 2.2.0
271
- * MRI 2.1.4
272
- * MRI 2.0.0
273
-
274
- ## Contributing
220
+ ### Contributing
275
221
 
276
222
  1. Fork it ( https://github.com/infosimples/two_captcha/fork )
277
223
  2. Create your feature branch (`git checkout -b my-new-feature`)
@@ -287,4 +233,4 @@ https://github.com/infosimples/two_captcha/graphs/contributors
287
233
 
288
234
  # License
289
235
 
290
- MIT License. Copyright (C) 2011-2015 Infosimples. https://infosimples.com/
236
+ MIT License. Copyright (C) 2011-2022 Infosimples. https://infosimples.com/
@@ -30,11 +30,12 @@ module TwoCaptcha
30
30
  # @return [TwoCaptcha::Captcha] The captcha (with solution) or an empty
31
31
  # captcha instance if something goes wrong.
32
32
  #
33
- def decode(options = {})
34
- decode!(options)
33
+ def decode_image(options = {})
34
+ decode_image!(options)
35
35
  rescue TwoCaptcha::Error => ex
36
36
  TwoCaptcha::Captcha.new
37
37
  end
38
+ alias :decode :decode_image
38
39
 
39
40
  # Decode the text from an image (i.e. solve a captcha).
40
41
  #
@@ -60,7 +61,7 @@ module TwoCaptcha
60
61
  # @return [TwoCaptcha::Captcha] The captcha (with solution) if an error is
61
62
  # not raised.
62
63
  #
63
- def decode!(options = {})
64
+ def decode_image!(options = {})
64
65
  started_at = Time.now
65
66
 
66
67
  raw64 = load_captcha(options)
@@ -77,6 +78,7 @@ module TwoCaptcha
77
78
 
78
79
  decoded_captcha
79
80
  end
81
+ alias :decode! :decode_image!
80
82
 
81
83
  #
82
84
  # Solve reCAPTCHA v2.
@@ -96,7 +98,7 @@ module TwoCaptcha
96
98
  #
97
99
  # @param [Hash] options Options hash.
98
100
  # @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.
101
+ # @option options [String] :pageurl The URL of the page where the recaptcha is present.
100
102
  #
101
103
  # @return [TwoCaptcha::Captcha] The solution of the given captcha.
102
104
  #
@@ -136,7 +138,7 @@ module TwoCaptcha
136
138
  #
137
139
  # @param [Hash] options Options hash.
138
140
  # @option options [String] :googlekey The open key of the site in which recaptcha is installed.
139
- # @option options [String] :pageurl The URL of the page where the recaptcha is encountered.
141
+ # @option options [String] :pageurl The URL of the page where the recaptcha is present.
140
142
  # @option options [String] :action The action paramenter present on the page that uses recaptcha.
141
143
  # @option options [String] :min_score The minimum score necessary to pass the challenge.
142
144
  #
@@ -181,7 +183,7 @@ module TwoCaptcha
181
183
  #
182
184
  # @param [Hash] options Options hash.
183
185
  # @option options [String] :sitekey The key of the site in which hCaptcha is installed.
184
- # @option options [String] :pageurl The URL of the page where the recaptcha is encountered.
186
+ # @option options [String] :pageurl The URL of the page where the hCaptcha is present.
185
187
  #
186
188
  # @return [TwoCaptcha::Captcha] The solution of the given captcha.
187
189
  #
@@ -203,6 +205,49 @@ module TwoCaptcha
203
205
  decoded_captcha
204
206
  end
205
207
 
208
+ # Solve Amazon WAF.
209
+ #
210
+ # @param [Hash] options Options hash. Check docs for the method decode_amazon_waf!.
211
+ #
212
+ # @return [TwoCaptcha::Captcha] The solution of the given captcha.
213
+ #
214
+ def decode_amazon_waf(options = {})
215
+ decode_amazon_waf!(opt)
216
+ rescue TwoCaptcha::Error => ex
217
+ TwoCaptcha::Captcha.new
218
+ end
219
+
220
+ #
221
+ # Solve Amazon WAF.
222
+ #
223
+ # @param [Hash] options Options hash.
224
+ # @option options [String] :sitekey The key of the site in which Amazon WAF is installed.
225
+ # @option options [String] :pageurl The URL of the page where the Amazon WAF is present.
226
+ # @option options [String] :iv The value of the `iv` parameter found on the page.
227
+ # @option options [String] :context The value of the `context` parameter found on the page.
228
+ # @option options [String] :challenge_script The source URL of challenge.js script on the page.
229
+ # @option options [String] :captcha_script The source URL of captcha.js script on the page
230
+ #
231
+ # @return [TwoCaptcha::Captcha] The solution of the given captcha.
232
+ #
233
+ def decode_amazon_waf!(options = {})
234
+ started_at = Time.now
235
+
236
+ fail(TwoCaptcha::ArgumentError) if options[:sitekey].empty? || options[:pageurl].empty? || options[:iv].empty? || options[:context].empty?
237
+
238
+ upload_options = { method: 'amazon_waf' }.merge(options)
239
+ decoded_captcha = upload(upload_options)
240
+
241
+ # pool untill the answer is ready
242
+ while decoded_captcha.text.to_s.empty?
243
+ sleep([polling, 10].max) # sleep at least 10 seconds
244
+ decoded_captcha = captcha(decoded_captcha.id)
245
+ fail TwoCaptcha::Timeout if (Time.now - started_at) > timeout
246
+ end
247
+
248
+ decoded_captcha
249
+ end
250
+
206
251
  # Upload a captcha to 2Captcha.
207
252
  #
208
253
  # This method will not return the solution. It helps on separating concerns.
@@ -1,4 +1,4 @@
1
1
  module TwoCaptcha
2
- VERSION = '1.7.0'
2
+ VERSION = '1.9.0'
3
3
  USER_AGENT = "TwoCaptcha/Ruby v#{VERSION}"
4
4
  end
data/two_captcha.gemspec CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
23
23
  spec.require_paths = ["lib"]
24
24
 
25
- spec.add_development_dependency "bundler", "~> 1.8"
26
- spec.add_development_dependency "rake", "~> 10.0"
25
+ spec.add_development_dependency "bundler", ">= 2.2.33"
26
+ spec.add_development_dependency "rake", ">= 12.3.3"
27
27
  spec.add_development_dependency "rspec", "~> 3.1"
28
28
  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.7.0
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafael Barbolo
@@ -9,36 +9,36 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-11-08 00:00:00.000000000 Z
12
+ date: 2024-10-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '1.8'
20
+ version: 2.2.33
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '1.8'
27
+ version: 2.2.33
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rake
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: '10.0'
34
+ version: 12.3.3
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - "~>"
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: '10.0'
41
+ version: 12.3.3
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rspec
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  requirements: []
106
- rubygems_version: 3.1.4
106
+ rubygems_version: 3.3.26
107
107
  signing_key:
108
108
  specification_version: 4
109
109
  summary: Ruby API for 2Captcha (Captcha Solver as a Service)