Selenium का उपयोग करके Ruby में CAPTCHA कैसे हल करें
Selenium का उपयोग करके Ruby में CAPTCHA कैसे हल करें
Rajinder Singh
Deep Learning Researcher
29-Aug-2024
CAPTCHA, या Completely Automated Public Turing tests to tell Computers and Humans Apart, वेबसाइटों को स्वचालित बॉट्स से बचाने के लिए डिज़ाइन किए गए हैं। जबकि वे ऑनलाइन प्लेटफ़ॉर्म को सुरक्षित करने में महत्वपूर्ण भूमिका निभाते हैं, वे Selenium जैसे टूल के साथ कार्यों को स्वचालित करते समय एक महत्वपूर्ण बाधा हो सकते हैं। यदि आप Ruby में Selenium के साथ काम कर रहे हैं और CAPTCHA को हल करने की आवश्यकता है, तो यह मार्गदर्शिका उन्हें प्रभावी ढंग से संभालने के लिए एक चरण-दर-चरण दृष्टिकोण प्रदान करेगी।
Selenium और Ruby क्या हैं?
CAPTCHA को हल करने में उतरने से पहले, उन टूल को समझना आवश्यक है जिनके साथ आप काम करेंगे: Selenium और Ruby।
Selenium एक शक्तिशाली ओपन-सोर्स टूल है जिसका उपयोग वेब ब्राउज़र को स्वचालित करने के लिए किया जाता है। यह डेवलपर्स को वेब पेजों के साथ उपयोगकर्ता इंटरैक्शन को अनुकरण करने के लिए विभिन्न प्रोग्रामिंग भाषाओं में स्क्रिप्ट लिखने की अनुमति देता है, जिससे यह परीक्षण और वेब स्क्रैपिंग के लिए एक लोकप्रिय विकल्प बन जाता है।
Ruby एक गतिशील, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है जो अपनी सादगी और उत्पादकता के लिए जानी जाती है। इसका उपयोग अक्सर वेब डेवलपमेंट में किया जाता है, और जब Selenium के साथ जोड़ा जाता है, तो यह ब्राउज़र कार्यों को स्वचालित करने के लिए एक मजबूत ढांचा प्रदान करता है।
CAPTCHA और उनके प्रकारों को समझना
समाधान में उतरने से पहले, विभिन्न प्रकार के CAPTCHA को समझना महत्वपूर्ण है जिनका आप सामना कर सकते हैं:
ImageToText CAPTCHA: इनके लिए उपयोगकर्ता को विकृत छवि में प्रदर्शित वर्णों को दर्ज करना होता है। आप कुछ सामान्य मामले यहाँ पा सकते हैं
इमेज-आधारित CAPTCHA: उपयोगकर्ताओं को उन छवियों का चयन करने की आवश्यकता होती है जो किसी दिए गए मानदंड से मेल खाती हैं (जैसे, यातायात संकेतों वाली सभी छवियों का चयन करें)। ज्यादातर reCAPTCHA से
reCAPTCHA: Google का उन्नत CAPTCHA सिस्टम जो अक्सर छवियों में वस्तुओं को पहचानने या यह साबित करने के लिए कि आप एक बॉट नहीं हैं, केवल एक चेकबॉक्स पर क्लिक करने की आवश्यकता होती है।
शीर्ष CAPTCHA समाधानों के लिए अपना बोनस कोड प्राप्त करें; CapSolver: WEBS। इसे भुनाने के बाद, आपको प्रत्येक रिचार्ज के बाद अतिरिक्त 5% बोनस मिलेगा, असीमित
क्या Selenium Ruby CAPTCHA को हल कर सकता है?
डेवलपर्स के बीच सबसे आम प्रश्नों में से एक यह है कि क्या Ruby के साथ Selenium CAPTCHA को हल कर सकता है। संक्षिप्त उत्तर है: सीधे नहीं। Selenium में CAPTCHA को हल करने की अंतर्निहित क्षमता नहीं है क्योंकि वे विशेष रूप से मानव उपयोगकर्ताओं और बॉट्स के बीच अंतर करने के लिए डिज़ाइन किए गए हैं।
हालांकि, Selenium Ruby में CAPTCHA को संभालने के कई तरीके हैं:
मैन्युअल हस्तक्षेप: कुछ मामलों में, डेवलपर्स स्वचालन प्रक्रिया के दौरान मैन्युअल रूप से CAPTCHA को हल करते हैं। हालाँकि, यह पूर्ण स्वचालन के उद्देश्य को विफल करता है।
थर्ड-पार्टी CAPTCHA सॉल्वर: सबसे प्रभावी तरीका CapSolver जैसी तृतीय-पक्ष सेवाओं को एकीकृत करना है जो उन्नत एल्गोरिदम और मानव बुद्धिमत्ता का उपयोग करके CAPTCHA को हल करने में विशेषज्ञता रखते हैं।
सरल CAPTCHA को हल करना: बहुत ही बुनियादी टेक्स्ट CAPTCHA के लिए, डेवलपर्स पैटर्न को पहचानने के लिए कस्टम स्क्रिप्ट लिख सकते हैं, हालांकि यह दृष्टिकोण सीमित है और अक्सर अविश्वसनीय होता है।
जबकि Selenium Ruby अपने आप CAPTCHA को हल नहीं कर सकता है, सही उपकरणों और सेवाओं के साथ, CAPTCHA को दरकिनार करने की प्रक्रिया को स्वचालित करना पूरी तरह से संभव है, जिसकी हम इस मार्गदर्शिका में खोज करेंगे।
Ruby में Selenium सेट करना
तैयारी
Google Chrome: Chrome ब्राउज़र का नवीनतम संस्करण स्थापित करें, क्योंकि हम Chrome के साथ इंटरैक्ट करने के लिए कोड का उपयोग करेंगे।
Ruby: सुनिश्चित करें कि आपके कंप्यूटर पर Ruby स्थापित है।
CapSolver: आधिकारिक CapSolver दस्तावेज़ CAPTCHA को हल करने में आपकी मदद करेगा।
एक बार आपके कंप्यूटर पर Ruby स्थापित हो जाने के बाद, आप gem install selenium-webdriver कमांड चलाकर Selenium WebDriver लाइब्रेरी स्थापित कर सकते हैं। अपने Chrome संस्करण की जाँच करें, और उसके आधार पर, संबंधित chromedriver.exe ड्राइवर डाउनलोड करें। आप डाउनलोड लिंक निम्नलिखित स्थानों पर पा सकते हैं:
डाउनलोड लिंक 1: ड्राइवर के नवीनतम स्थिर, बीटा, देव और कैनरी संस्करण प्रदान करता है।
डाउनलोड लिंक 2: संस्करण 113 से आगे के सभी ड्राइवर प्रदान करता है।
डाउनलोड लिंक 3: संस्करण 113 से पहले के सभी ड्राइवर प्रदान करता है।
लक्षित वेबसाइट का विश्लेषण
हम reCAPTCHA को Ruby Selenium का उपयोग करके हल करने के उदाहरण के रूप में https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php वेबसाइट का उपयोग करेंगे।
शुरू करने से पहले, हमें HTML फॉर्म सबमिशन की मूल बातों को समझने की आवश्यकता है। इस पृष्ठ को देखकर और डेवलपर टूल खोलकर, हम मैन्युअल रूप से reCAPTCHA को हल कर सकते हैं और फिर सबमिट बटन पर क्लिक कर सकते हैं। यह क्रिया एक POST अनुरोध भेजती है, तीन फ़ील्ड सबमिट करती है: ex-a, ex-b, और g-recaptcha-response, जैसा कि नीचे दिखाया गया है:
ये तीन फ़ील्ड प्रारंभिक HTML स्रोत कोड में फ़ॉर्म के अंतर्गत दो इनपुट तत्वों और एक टेक्स्टएरिया तत्व के अनुरूप हैं, जैसा कि नीचे दिखाया गया है:
Ruby Selenium के साथ प्रक्रिया को स्वचालित करना
हम Ruby Selenium का उपयोग करके पूरी प्रक्रिया को कैसे स्वचालित कर सकते हैं? चरण इस प्रकार हैं:
Ruby लक्षित वेबसाइट पर जाने के लिए Selenium को चलाता है।
Ruby reCAPTCHA को हल करने और एक टोकन प्राप्त करने के लिए CapSolver API को कॉल करता है।
टेक्स्टएरिया तत्व की CSS शैली को display: none से display: block में बदलें ताकि इसे Selenium के साथ इंटरैक्टिव बनाया जा सके।
CapSolver द्वारा लौटाए गए टोकन को टेक्स्टएरिया तत्व में दर्ज करने का अनुकरण करें।
फ़ॉर्म सबमिट करने और सत्यापन पूरा करने के लिए सबमिट बटन पर क्लिक करने का अनुकरण करें।
Ruby Selenium के साथ लक्षित वेबसाइट पर जाना
सुनिश्चित करें कि आप नीचे दिए गए कोड में driver_path को अपने कंप्यूटर पर chromedriver के वास्तविक पथ से बदल देते हैं।
rubyCopy
require 'selenium-webdriver'
# Chrome ब्राउज़र विकल्पों को इनिशियलाइज़ करें और लक्षित वेबसाइट तक पहुँचें
driver_path = "path/to/chromedriver.exe"
options = Selenium::WebDriver::Chrome::Options.new
service = Selenium::WebDriver::Service.chrome(path: driver_path)
driver = Selenium::WebDriver.for :chrome, options: options, service: service
url = "https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php"
driver.navigate.to url
टोकन प्राप्त करना
CapSolver API का उपयोग करने के लिए, हमें websiteKey प्रदान करने की आवश्यकता है, जो पृष्ठ स्रोत में कीवर्ड data-sitekey की खोज करके पाया जा सकता है:
अब, आइए reCAPTCHA को स्वचालित रूप से हल करने के लिए CapSolver API का उपयोग करने के लिए Ruby कोड लिखें:
rubyCopy
require 'net/http'
require 'json'
require 'time'
def cap_solver(api_key, public_key, page_url)
payload = {
"clientKey" => api_key,
"task" => {
"type" => 'ReCaptchaV2TaskProxyLess',
"websiteKey" => public_key,
"websiteURL" => page_url,
}
}
# एक कार्य निर्माण अनुरोध भेजें
uri = URI("https://api.capsolver.com/createTask")
res = Net::HTTP.post(uri, payload.to_json, { "Content-Type" => "application/json" })
resp = JSON.parse(res.body)
task_id = resp["taskId"]
unless task_id
puts "कार्य बनाने में विफल: #{res.body}"
return
end
puts "Got taskId: #{task_id}"
# कार्य परिणाम प्राप्त करने के लिए प्रतीक्षा लूप
loop do
sleep(1)
payload = { "clientKey" => api_key, "taskId" => task_id }
uri = URI("https://api.capsolver.com/getTaskResult")
res = Net::HTTP.post(uri, payload.to_json, { "Content-Type" => "application/json" })
resp = JSON.parse(res.body)
status = resp["status"]
if status == "ready"
token = resp.dig("solution", "gRecaptchaResponse")
puts "समाधान सफल, टोकन: #{token}"
return token
elsif status == "processing"
puts "समाधान प्रगति पर है..."
elsif status == "failed"
puts "समाधान विफल! प्रतिक्रिया: #{res.body}"
return
end
end
end
Selenium में टोकन का उपयोग करना
अगला, हमें टोकन को वेबपेज में इनपुट करने, स्वचालित रूप से सबमिट पर क्लिक करने और पूरी प्रक्रिया को पूरा करने की आवश्यकता है। आइए सभी कोड को मिलाएँ; पूरा कोड इस प्रकार है (अपनी स्वयं की कुंजी के साथ cap_solver_api_key को बदलना सुनिश्चित करें, जो CapSolver डैशबोर्ड में पाई जा सकती है):
rubyCopy
require 'selenium-webdriver'
require 'net/http'
require 'json'
require 'time'
def cap_solver(api_key, website_key, page_url)
payload = {
"clientKey" => api_key,
"task" => {
"type" => 'ReCaptchaV2TaskProxyLess',
"websiteKey" => website_key,
"websiteURL" => page_url,
}
}
# एक कार्य निर्माण अनुरोध भेजें
uri = URI("https://api.capsolver.com/createTask")
res = Net::HTTP.post(uri, payload.to_json, { "Content-Type" => "application/json" })
resp = JSON.parse(res.body)
task_id = resp["taskId"]
unless task_id
puts "कार्य बनाने में विफल: #{res.body}"
return
end
puts "Got taskId: #{task_id}"
# कार्य परिणाम प्राप्त करने के लिए प्रतीक्षा लूप
loop do
sleep(1)
payload = { "clientKey" => api_key, "taskId" => task_id }
uri = URI("https://api.capsolver.com/getTaskResult")
res = Net::HTTP.post(uri, payload.to_json, { "Content-Type" => "application/json" })
resp = JSON.parse(res.body)
status = resp["status"]
if status == "ready"
token = resp.dig("solution", "gRecaptchaResponse")
puts "समाधान सफल, टोकन: #{token}"
return token
elsif status == "processing"
puts "समाधान प्रगति पर है..."
elsif status == "failed"
puts "समाधान विफल! प्रतिक्रिया: #{res.body}"
return
end
end
end
# Chrome ब्राउज़र विकल्पों को इनिशियलाइज़ करें और लक्षित वेबसाइट तक पहुँचें
driver_path = "path/to/chromedriver.exe"
options = Selenium::WebDriver::Chrome::Options.new
service = Selenium::WebDriver::Service.chrome(path: driver_path)
driver = Selenium::WebDriver.for :chrome, options: options, service: service
url = "https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php"
driver.navigate.to url
# ReCaptcha को हल करने के लिए CapSolver API को कॉल करें
cap_solver_api_key = 'YOUR_API_KEY'
website_key = '6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9'
token = cap_solver(cap_solver_api_key, website_key, url)
if token.nil? || token.empty?
puts "captcha को हल करने में विफल, बाहर निकलने के लिए कोई भी कुंजी दबाएँ।"
STDIN.gets
driver.quit
return
end
# इसे दिखाई देने के लिए टेक्स्टएरिया की प्रदर्शन शैली संपत्ति को ब्लॉक में बदलें
driver.execute_script("document.getElementById('g-recaptcha-response').style.display = 'block';")
# टेक्स्टएरिया में टोकन इनपुट करने का अनुकरण करें
textarea = driver.find_element(id: 'g-recaptcha-response')
textarea.send_keys(token)
# क्लिक करने और एक फॉर्म सबमिट करने का अनुकरण करें
submit_btn = driver.find_element(css: "button[type='submit']")
submit_btn.click
puts "बाहर निकलने के लिए कोई भी कुंजी दबाएँ।"
STDIN.gets
driver.quit
उपरोक्त कोड चलाएँ और आप देखेंगे कि recaptcha सफलतापूर्वक हल हो गया है।
अधिक जानकारी
CapSolver सेकंडों में CAPTCHA को हल करने में आपकी मदद करने के लिए AI-आधारित स्वचालित वेब अनलॉक तकनीक का उपयोग करता है। यह न केवल reCAPTCHA बल्कि Cloudflare Turnstile और बहुत कुछ भी हल कर सकता है। CapSolver कई भाषाओं में SDK के साथ-साथ ब्राउज़र एक्सटेंशन भी प्रदान करता है। अधिक जानकारी के लिए आप CapSolver दस्तावेज़ का संदर्भ ले सकते हैं।
अनुपालन अस्वीकरण: इस ब्लॉग पर प्रदान की गई जानकारी केवल सूचनात्मक उद्देश्यों के लिए है। CapSolver सभी लागू कानूनों और विनियमों का पालन करने के लिए प्रतिबद्ध है। CapSolver नेटवर्क का उपयोग अवैध, धोखाधड़ी या दुरुपयोग करने वाली गतिविधियों के लिए करना सख्त वर्जित है और इसकी जांच की जाएगी। हमारे कैप्चा समाधान उपयोगकर्ता अनुभव को बेहतर बनाने के साथ-साथ सार्वजनिक डेटा क्रॉलिंग के दौरान कैप्चा कठिनाइयों को हल करने में 100% अनुपालन सुनिश्चित करते हैं। हम अपनी सेवाओं के जिम्मेदार उपयोग की प्रोत्साहना करते हैं। अधिक जानकारी के लिए, कृपया हमारी सेवा की शर्तें और गोपनीयता नीति पर जाएं।