metabypass 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f0ad3d48024bd85160f515e01c3612488d95bb60c0531d6a5a1755da75001c2a
4
+ data.tar.gz: 87971080bf27a6f8dbcdeb348fb300a4d896955868d5d47a10a334eb52ee7961
5
+ SHA512:
6
+ metadata.gz: a55e774b450f99b2b99f14fffdc4974bd70dacaa996c039af34a05532ac983b04ed54b2d550c75764dc4bd061ecb34a53e2834e44e1274f521c792cbd29e448a
7
+ data.tar.gz: 2a1b25bd7099804c6d0873ecf58e38acbe83d6b79886d104259a6dae6739b647c705bd2ca495a43b979ce2b346f261a00c1e8bda6e731014fa3ff7587ca72b64
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ *.gem
2
+ *.token
data/GemFile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+
data/GemFile.lock ADDED
@@ -0,0 +1,11 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+
5
+ PLATFORMS
6
+ x64-mingw-ucrt
7
+
8
+ DEPENDENCIES
9
+
10
+ BUNDLED WITH
11
+ 2.4.14
data/README.md ADDED
@@ -0,0 +1,141 @@
1
+ # MetaBypass ( AI Captcha Solver )
2
+ ## Ruby class to work with [MetaBypass](https://metabypass.tech) services
3
+
4
+ Free demo (no credit card required) -> https://app.metabypass.tech/application
5
+
6
+ <br/>
7
+
8
+ ### Features
9
+
10
+ Solve image captcha , reCaptcha v2 & v3 <br/>
11
+ Auto handler for reCaptcha v2 <br/>
12
+ Simple syntax <br/>
13
+ Error logger <br/>
14
+
15
+ <br/>
16
+ <br/>
17
+
18
+ ## Install via gem
19
+
20
+ Go to your project root directory and run this command in terminal:
21
+
22
+ <br/>
23
+
24
+ ```
25
+ gem install metabypass
26
+ ```
27
+
28
+ <br/>
29
+ <br/>
30
+
31
+
32
+ ## Usage
33
+
34
+ <br/>
35
+
36
+ **Image Captcha** <br />
37
+ ```ruby
38
+ require 'metabypass'
39
+
40
+
41
+ # ---------------------------- CREDENTIALS -----------------------------
42
+ #get your credentials from https://app.metabypass.tech/application
43
+
44
+ client_id = 'YOUR_CLIENT_ID'
45
+ client_secret = 'YOUR_CLIENT_SECRET'
46
+ email = 'YOUR_EMAIL'
47
+ password = 'YOUR_PASSWORD'
48
+
49
+
50
+ # Metabypass instance
51
+ metabypass = Metabypass.new(client_id,client_secret,email,password)
52
+
53
+ # ----------------------------IMAGE CAPTCHA SAMPLE -----------------------------
54
+ #you can pass base64 encoded image file or path of image file
55
+ img="samples/icaptcha1.jpg"
56
+ #you can pass some optional params too. more details: https://app.metabypass.tech/docs.html?#api_3
57
+ numeric=0; #default
58
+ min_len=0; #default
59
+ max_len=0; #default
60
+ image_captcha= metabypass.image_captcha(img,numeric,min_len,max_len)
61
+ puts metabypass.end_result
62
+ ```
63
+ <br/><br/>
64
+
65
+ **reCaptcha v2** <br />
66
+ ```ruby
67
+ require 'metabypass'
68
+
69
+
70
+ # ---------------------------- CREDENTIALS -----------------------------
71
+ #get your credentials from https://app.metabypass.tech/application
72
+
73
+ client_id = 'YOUR_CLIENT_ID'
74
+ client_secret = 'YOUR_CLIENT_SECRET'
75
+ email = 'YOUR_EMAIL'
76
+ password = 'YOUR_PASSWORD'
77
+
78
+ # Metabypass instance
79
+ metabypass = Metabypass.new(client_id,client_secret,email,password)
80
+
81
+ # --------------------------- reCAPTCHA V2 SAMPLE -----------------------------
82
+ url="SITE_URL"
83
+ sitekey="SITE_KEY"
84
+ recaptcha_v2= metabypass.recaptcha_v2_handler(url,sitekey)
85
+ puts metabypass.end_result
86
+ ```
87
+ <br/><br/>
88
+
89
+
90
+ **reCaptcha v3** <br />
91
+ ```ruby
92
+ require 'metabypass'
93
+
94
+
95
+ # ---------------------------- CREDENTIALS -----------------------------
96
+ #get your credentials from https://app.metabypass.tech/application
97
+
98
+ client_id = 'YOUR_CLIENT_ID'
99
+ client_secret = 'YOUR_CLIENT_SECRET'
100
+ email = 'YOUR_EMAIL'
101
+ password = 'YOUR_PASSWORD'
102
+
103
+
104
+ # Metabypass instance
105
+ metabypass = Metabypass.new(client_id,client_secret,email,password)
106
+
107
+ # --------------------------- reCAPTCHA V3 SAMPLE -----------------------------
108
+ url="SITE_URL"
109
+ sitekey="SITE_KEY"
110
+ recaptcha_v3= metabypass.recaptcha_v3(url,sitekey)
111
+ puts metabypass.end_result
112
+
113
+ ```
114
+ <br/><br/>
115
+
116
+
117
+ **reCaptcha invisible** <br />
118
+ ```ruby
119
+ require 'metabypass'
120
+
121
+
122
+ # ---------------------------- CREDENTIALS -----------------------------
123
+ #get your credentials from https://app.metabypass.tech/application
124
+
125
+ client_id = 'YOUR_CLIENT_ID'
126
+ client_secret = 'YOUR_CLIENT_SECRET'
127
+ email = 'YOUR_EMAIL'
128
+ password = 'YOUR_PASSWORD'
129
+
130
+
131
+ # Metabypass instance
132
+ metabypass = Metabypass.new(client_id,client_secret,email,password)
133
+
134
+ # --------------------------- reCAPTCHA INVISIBLE SAMPLE -----------------------------
135
+ url="SITE_URL"
136
+ sitekey="SITE_KEY"
137
+ recaptcha_invisible= metabypass.recaptcha_invisible(url,sitekey)
138
+ puts metabypass.end_result
139
+
140
+ ```
141
+ <br/><br/>
data/lib/auth/auth.rb ADDED
@@ -0,0 +1,72 @@
1
+ require_relative __dir__+"/../helpers"
2
+ require 'net/http'
3
+ require 'json'
4
+
5
+
6
+ class Auth
7
+
8
+ # attr_reader :email, :password, :client_id, :client_secret,
9
+
10
+ def initialize(client_id,client_secret,email,password)
11
+ @client_id = client_id
12
+ @client_secret = client_secret
13
+ @password = password
14
+ @email = email
15
+ @access_token_file_path = File.join(__dir__, 'metabypass.token')
16
+ @access_token = retrieve_access_token || generate_access_token
17
+ end
18
+
19
+
20
+ def generate_access_token
21
+
22
+ request_url = 'https://app.metabypass.tech/CaptchaSolver/oauth/token'
23
+
24
+ params = {
25
+ 'grant_type' => 'password',
26
+ 'client_id' => @client_id,
27
+ 'client_secret' => @client_secret,
28
+ 'username' => @email,
29
+ 'password' => @password
30
+ }
31
+
32
+ headers = {
33
+ 'Content-Type' => 'application/json',
34
+ 'Accept' => 'application/json'
35
+ }
36
+
37
+ #webservice response
38
+ response = send_request(request_url, params, 'POST', headers)
39
+
40
+ if response.empty?
41
+ message = 'error! server response is empty'
42
+
43
+ #logger
44
+ logger.error(message)
45
+ return false
46
+ end
47
+
48
+
49
+ headers = JSON.parse(response['headers'])
50
+ body = JSON.parse(response['body'])
51
+
52
+ if headers['http_code'] == 200
53
+ @access_token = body['access_token']
54
+
55
+ File.write(@access_token_file_path, body['access_token'])
56
+ return body['access_token']
57
+ else
58
+ message = 'error! unauth'
59
+ #logger
60
+ logger.error(message)
61
+ return false
62
+ end
63
+
64
+ end
65
+
66
+ private
67
+
68
+ def retrieve_access_token
69
+ File.read(@access_token_file_path) if File.exist?(@access_token_file_path)
70
+ end
71
+
72
+ end
data/lib/helpers.rb ADDED
@@ -0,0 +1,53 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+
4
+
5
+ def send_request(url, params, method, headers)
6
+
7
+ #prepare
8
+ uri = URI(url)
9
+ http = Net::HTTP.new(uri.host, uri.port)
10
+ http.use_ssl = true if uri.scheme == 'https'
11
+
12
+ #method types
13
+ case method
14
+ when 'GET'
15
+ uri.query = URI.encode_www_form(params)
16
+ request = Net::HTTP::Get.new(uri)
17
+ when 'POST'
18
+ request = Net::HTTP::Post.new(uri)
19
+ request.body = params.to_json
20
+ when 'PUT'
21
+ request = Net::HTTP::Put.new(uri)
22
+ request.body = params.to_json
23
+ when 'DELETE'
24
+ uri.query = URI.encode_www_form(params)
25
+ request = Net::HTTP::Delete.new(uri)
26
+ else
27
+ return {}
28
+ end
29
+
30
+ headers.each { |key, value| request[key] = value }
31
+
32
+ response = http.request(request)
33
+
34
+ headers= response.to_hash
35
+ headers['http_code']=response.code.to_i
36
+
37
+ {
38
+ 'headers' =>headers.to_json,
39
+ 'body' => response.body
40
+ }
41
+
42
+ end
43
+
44
+ def is_base64_format?(str)
45
+
46
+ # Remove whitespace characters from the string
47
+ cleaned_str = str.gsub(/\s+/, '')
48
+
49
+ # Check if the cleaned string is in the valid base64 format
50
+ # by matching it against the base64 regular expression pattern
51
+ base64_pattern = /^[a-zA-Z0-9+\/]+={0,2}$/
52
+ base64_pattern.match?(cleaned_str)
53
+ end
data/lib/metabypass.rb ADDED
@@ -0,0 +1,122 @@
1
+ require_relative __dir__+'/helpers'
2
+ require_relative __dir__+'/auth/auth'
3
+ require_relative __dir__+'/modules/captcha_solver'
4
+ require_relative __dir__+'/modules/recaptcha'
5
+ require 'base64'
6
+ include CaptchaSolver
7
+ include ReCaptcha
8
+ require 'logger'
9
+
10
+
11
+
12
+
13
+ class Metabypass < Auth
14
+
15
+ attr_accessor :end_result, :logger , :logger_file_path
16
+
17
+
18
+ def initialize(client_id,client_secret,email,password)
19
+ @end_result = nil
20
+ @logger_file_path='metabypass.log'
21
+ @logger = Logger.new(@logger_file_path)
22
+ super(client_id,client_secret,email,password)
23
+ end
24
+
25
+
26
+ # Image captcha requester
27
+ def image_captcha(image, numeric = 0, minLen = 0, maxLen = 0)
28
+
29
+ @end_result=nil
30
+
31
+ # Check if the image is a file or base64
32
+ if File.exist?(image)
33
+
34
+ begin
35
+
36
+ context = File.binread(image)
37
+ base64EncodedFile = Base64.encode64(context).delete("\r\n")
38
+
39
+ rescue Errno::ENOENT => e
40
+ #logger
41
+ message='file did not read'
42
+ logger.error(message)
43
+ false
44
+ end
45
+
46
+ elsif is_base64_format?(image)
47
+ base64EncodedFile = image
48
+ else
49
+ #logger
50
+ message='invalid image. pass image path or valid base64 of image'
51
+ logger.error(message)
52
+ false
53
+ end
54
+
55
+ image_captcha_requester(base64EncodedFile, numeric, minLen, maxLen)
56
+
57
+ end
58
+
59
+
60
+ # Simple reCaptcha v2 requester without handling the result
61
+ def recaptcha_v2(url, siteKey)
62
+ @end_result=nil
63
+ # This is just an API caller for developers
64
+ recaptcha_v2_requester(url, siteKey)
65
+ end
66
+
67
+
68
+ # reCaptcha v2 requester & result handler
69
+ def recaptcha_v2_handler(url, siteKey)
70
+
71
+ @end_result=nil
72
+ # Request reCaptcha v2 API
73
+ recaptcha_response = recaptcha_v2_requester(url, siteKey)
74
+
75
+ false unless recaptcha_response
76
+
77
+ if recaptcha_response['data']['RecaptchaId'].nil?
78
+ #logger
79
+ mwssage='invalid reCaptcha v2 response. RecaptchaId not found in response body. '
80
+ logger.error(message)
81
+ message
82
+ false
83
+ end
84
+
85
+ result=nil
86
+ # Handle getting the result (max: 100 seconds)
87
+ puts "to get result wait 10 seconds ... (to disable this message go to metabypass.rb file and comment line #{__LINE__})"
88
+ 10.times do
89
+
90
+ # Sleep for 10 seconds to get the result
91
+ sleep(10)
92
+
93
+ # Request get result API
94
+ result = recaptchav2_get_result_requester(recaptcha_response['data']['RecaptchaId'])
95
+ # puts result.inspect # Show get result response
96
+
97
+ if result['status_code'] == 200
98
+ break
99
+ else
100
+ @end_result = false
101
+ puts "reCAPTCHA result not ready. Wait 10 seconds again... (to disable this message go to metabypass.rb file and comment line #{__LINE__})"
102
+ end
103
+ end
104
+
105
+ result
106
+ end
107
+
108
+
109
+ # reCaptcha v3 requester
110
+ def recaptcha_v3(url, siteKey)
111
+ @end_result=nil
112
+ recaptcha_v3_requester(url, siteKey)
113
+ end
114
+
115
+
116
+ # reCaptcha invisible requester
117
+ def recaptcha_invisible(url, siteKey)
118
+ @end_result=nil
119
+ re_captcha_invisible_requester(url, siteKey)
120
+ end
121
+
122
+ end
@@ -0,0 +1,54 @@
1
+ require_relative __dir__+'/../helpers'
2
+
3
+ module CaptchaSolver
4
+
5
+ def image_captcha_requester(image, numeric = 0, min_len = 0, max_len = 0)
6
+
7
+ request_url = 'https://app.metabypass.tech/CaptchaSolver/api/v1/services/captchaSolver'
8
+
9
+ params = {
10
+ 'image' => image,
11
+ 'numeric' => numeric,
12
+ 'min_len' => min_len,
13
+ 'max_len' => max_len
14
+ }
15
+
16
+ headers = {
17
+ 'Content-Type' => 'application/json',
18
+ 'Authorization' => 'Bearer ' + @access_token.delete("\r\n"),
19
+ 'Accept' => 'application/json'
20
+ }
21
+
22
+ response = send_request(request_url, params, 'POST', headers)
23
+
24
+
25
+
26
+ if response.empty?
27
+ message = 'error! server response is empty'
28
+ logger.error(message)
29
+ false
30
+ end
31
+
32
+ response_headers = JSON.parse(response['headers'])
33
+ response_body = JSON.parse(response['body'])
34
+
35
+ if response_headers['http_code'] == 200
36
+ if response_body['status_code'].to_i == 200
37
+ @end_result = response_body['data']['result']
38
+ end
39
+ response_body
40
+ elsif response_headers['http_code'] == 401
41
+ status = generate_access_token
42
+ if status == false
43
+ puts 'unauth'
44
+ exit
45
+ end
46
+ image_captcha_requester(image, numeric, min_len, max_len)
47
+ else
48
+ message = 'error! image captcha'
49
+ #logger
50
+ logger.error(message)
51
+ false
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,201 @@
1
+ require_relative __dir__+'/../helpers'
2
+
3
+
4
+ module ReCaptcha
5
+
6
+ # recaptcha v2 requester
7
+ def recaptcha_v2_requester(url, siteKey)
8
+ request_url = "https://app.metabypass.tech/CaptchaSolver/api/v1/services/bypassReCaptcha"
9
+
10
+ params = {
11
+ "url" => url,
12
+ "version" => 2,
13
+ "sitekey" => siteKey
14
+ }
15
+
16
+ headers = {
17
+ 'Content-Type' => 'application/json',
18
+ 'Authorization' => 'Bearer ' + @access_token.delete("\r\n"),
19
+ 'Accept' => 'application/json'
20
+ }
21
+
22
+ # send request to metabypass
23
+ response = send_request(request_url, params, 'POST', headers)
24
+
25
+ if response.empty?
26
+ message = 'error! server response is empty'
27
+ logger.error(message)
28
+ false
29
+ end
30
+
31
+ response_headers = JSON.parse(response['headers'])
32
+ response_body = JSON.parse(response['body'])
33
+
34
+ if response_headers['http_code'] == 200
35
+ response_body
36
+ elsif response_headers['http_code'] == 401
37
+ status = generate_access_token
38
+ if status == false
39
+ puts 'unauth'
40
+ logger.error('unauth')
41
+ exit
42
+ end
43
+ recaptcha_v2_requester(url, siteKey)
44
+ else
45
+ message = 'error! image captcha'
46
+ #logger
47
+ logger.error(message)
48
+ false
49
+ end
50
+ end
51
+
52
+ # reCaptcha v3 requester
53
+ def recaptcha_v3_requester(url, siteKey)
54
+ request_url = "https://app.metabypass.tech/CaptchaSolver/api/v1/services/bypassReCaptcha"
55
+
56
+ params = {
57
+ "url" => url,
58
+ "version" => 3,
59
+ "sitekey" => siteKey
60
+ }
61
+
62
+ headers = {
63
+ 'Content-Type' => 'application/json',
64
+ 'Authorization' => 'Bearer ' + @access_token.delete("\r\n"),
65
+ 'Accept' => 'application/json'
66
+ }
67
+
68
+ # send request to metabypass
69
+ response = send_request(request_url, params, 'POST', headers)
70
+
71
+ if response.empty?
72
+ message = 'error! server response is empty'
73
+ #logger
74
+ logger.error(message)
75
+ false
76
+ end
77
+
78
+ response_headers = JSON.parse(response['headers'])
79
+ response_body = JSON.parse(response['body'])
80
+
81
+ if response_headers['http_code'] == 200
82
+ if response_body['status_code'].to_i == 200
83
+ @end_result = response_body['data']['RecaptchaResponse']
84
+ end
85
+ response_body
86
+ elsif response_headers['http_code'] == 401
87
+ status = generate_access_token
88
+ if status == false
89
+ puts 'unauth'
90
+ logger.error('unauth')
91
+ exit
92
+ end
93
+ re_captcha_v3_requester(url, siteKey)
94
+ else
95
+ message = 'error! image captcha'
96
+ #logger
97
+ logger.error(message)
98
+ false
99
+ end
100
+ end
101
+
102
+ # reCaptcha v3 requester
103
+ def re_captcha_invisible_requester(url, siteKey)
104
+ request_url = "https://app.metabypass.tech/CaptchaSolver/api/v1/services/bypassReCaptcha"
105
+
106
+ params = {
107
+ "url" => url,
108
+ "version" =>'invisible',
109
+ "sitekey" => siteKey
110
+ }
111
+
112
+ headers = {
113
+ 'Content-Type' => 'application/json',
114
+ 'Authorization' => 'Bearer ' + @access_token.delete("\r\n"),
115
+ 'Accept' => 'application/json'
116
+ }
117
+
118
+ # send request to metabypass
119
+ response = send_request(request_url, params, 'POST', headers)
120
+
121
+ if response.empty?
122
+ message = 'error! server response is empty'
123
+ #logger
124
+ logger.error(message)
125
+ false
126
+ end
127
+
128
+ response_headers = JSON.parse(response['headers'])
129
+ response_body = JSON.parse(response['body'])
130
+
131
+ if response_headers['http_code'] == 200
132
+ if response_body['status_code'].to_i == 200
133
+ @end_result = response_body['data']['RecaptchaResponse']
134
+ end
135
+ response_body
136
+ elsif response_headers['http_code'] == 401
137
+ status = generate_access_token
138
+ if status == false
139
+ puts 'unauth'
140
+ logger.error('unauth')
141
+ exit
142
+ end
143
+ re_captcha_v3_requester(url, siteKey)
144
+ else
145
+ message = 'error! image captcha'
146
+ #logger
147
+ logger.error(message)
148
+ false
149
+ end
150
+ end
151
+
152
+ # reCaptcha get result requester
153
+ def recaptchav2_get_result_requester(recaptcha_id)
154
+
155
+ request_url = "https://app.metabypass.tech/CaptchaSolver/api/v1/services/getCaptchaResult"
156
+
157
+ params = {
158
+ "recaptcha_id" => recaptcha_id
159
+ }
160
+
161
+ headers = {
162
+ 'Content-Type' => 'application/json',
163
+ 'Authorization' => 'Bearer ' + @access_token.delete("\r\n"),
164
+ 'Accept' => 'application/json'
165
+ }
166
+
167
+ # send request to metabypass
168
+ response = send_request(request_url, params, 'GET', headers)
169
+
170
+ if response.empty?
171
+ message = 'error! server response is empty'
172
+
173
+ #logger
174
+ logger.error(message)
175
+ false
176
+ end
177
+
178
+ response_headers = JSON.parse(response['headers'])
179
+ response_body = JSON.parse(response['body'])
180
+
181
+ if response_headers['http_code'] == 200
182
+ if response_body['status_code'].to_i == 200
183
+ @end_result = response_body['data']['RecaptchaResponse']
184
+ end
185
+ response_body
186
+ elsif response_headers['http_code'] == 401
187
+ status = generate_access_token
188
+ if status == false
189
+ puts 'unauth'
190
+ logger.error('unauth')
191
+ exit
192
+ end
193
+ recaptchav2_get_result_requester(recaptcha_id)
194
+ else
195
+ message = 'error! image captcha'
196
+ #logger
197
+ logger.error(message)
198
+ false
199
+ end
200
+ end
201
+ end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ $LOAD_PATH.push File.expand_path("../lib", __FILE__)
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "metabypass"
7
+ spec.version = '1.0.1'
8
+ spec.platform = Gem::Platform::RUBY
9
+ spec.licenses = ['MIT']
10
+ spec.authors = ["Metabypass"]
11
+ spec.email = ["support@metabypass.tech"]
12
+ spec.homepage = "https://github.com/metabypass/captcha-solver-ruby"
13
+ spec.summary = 'Metabypass | Ruby-based easy implementation for solving any type of captcha by Metabypass '
14
+ spec.description = 'Metabypass | Ruby-based easy implementation for solving any type of captcha by Metabypass '
15
+
16
+ # If this line is removed, all fun times will cease.
17
+ spec.post_install_message = "Welcome to the party of AI Captcha Solvers !"
18
+
19
+ all_files = `git ls-files`.split("\n")
20
+ spec.files = all_files
21
+ spec.require_paths = ["lib"]
22
+ end
data/metabypass.log ADDED
@@ -0,0 +1,2 @@
1
+ # Logfile created on 2023-06-20 15:33:36 +0430 by logger.rb/v1.5.3
2
+ E, [2023-06-20T15:37:15.331835 #5068] ERROR -- : error! unauth
Binary file
Binary file
data/usage.rb ADDED
@@ -0,0 +1,45 @@
1
+ require_relative __dir__+'/lib/metabypass'
2
+
3
+
4
+ # ---------------------------- CREDENTIALS -----------------------------
5
+
6
+ client_id = 'YOUR_CLIENT_ID'
7
+ client_secret = 'YOUR_CLIENT_SECRET'
8
+ email = 'YOUR_EMAIL'
9
+ password = 'YOUR_PASSWORD'
10
+
11
+
12
+
13
+ # Metabypass instance
14
+ metabypass = Metabypass.new(client_id,client_secret,email,password)
15
+
16
+
17
+ # ----------------------------IMAGE CAPTCHA SAMPLE -----------------------------
18
+ img="samples/icaptcha1.jpg"
19
+ numeric=0; #default
20
+ min_len=0; #default
21
+ max_len=0; #default
22
+ image_captcha= metabypass.image_captcha(img,numeric,min_len,max_len)
23
+ puts metabypass.end_result
24
+
25
+
26
+ # # --------------------------- reCAPTCHA V2 SAMPLE -----------------------------
27
+ # url="SITE_URL"
28
+ # sitekey="SITE_KEY"
29
+ # recaptcha_v2= metabypass.recaptcha_v2_handler(url,sitekey)
30
+ # puts metabypass.end_result
31
+
32
+ # --------------------------- reCAPTCHA V3 SAMPLE -----------------------------
33
+ # url="SITE_URL"
34
+ # sitekey="SITE_KEY"
35
+ # recaptcha_v3= metabypass.recaptcha_v3(url,sitekey)
36
+ # puts metabypass.end_result
37
+
38
+
39
+ # --------------------------- reCAPTCHA INVISIBLE SAMPLE -----------------------------
40
+ # url="SITE_URL"
41
+ # sitekey="SITE_KEY"
42
+ # recaptcha_invisible= metabypass.recaptcha_invisible(url,sitekey)
43
+ # puts metabypass.end_result
44
+
45
+
metadata ADDED
@@ -0,0 +1,59 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: metabypass
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Metabypass
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-06-21 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: 'Metabypass | Ruby-based easy implementation for solving any type of
14
+ captcha by Metabypass '
15
+ email:
16
+ - support@metabypass.tech
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - ".gitignore"
22
+ - GemFile
23
+ - GemFile.lock
24
+ - README.md
25
+ - lib/auth/auth.rb
26
+ - lib/helpers.rb
27
+ - lib/metabypass.rb
28
+ - lib/modules/captcha_solver.rb
29
+ - lib/modules/recaptcha.rb
30
+ - metabypass.gemspec
31
+ - metabypass.log
32
+ - samples/icaptcha1.jpg
33
+ - samples/icaptcha2.png
34
+ - usage.rb
35
+ homepage: https://github.com/metabypass/captcha-solver-ruby
36
+ licenses:
37
+ - MIT
38
+ metadata: {}
39
+ post_install_message: Welcome to the party of AI Captcha Solvers !
40
+ rdoc_options: []
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ requirements: []
54
+ rubygems_version: 3.4.10
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: Metabypass | Ruby-based easy implementation for solving any type of captcha
58
+ by Metabypass
59
+ test_files: []