
कस्टम Selenium Chromedriver | ज़ीरो-कॉन्फ़िग | सभी बॉट मिटिगेशन सिस्टम को पार करता है (जैसे Distil / Imperva / Datadadome / CloudFlare IUAM)
https://github.com/ultrafunkamsterdam/undetected-chromedriver
अनुकूलित Selenium Chromedriver पैच जो Distill Network / Imperva / DataDome / Botprotect.io जैसी anti-bot सेवाओं को ट्रिगर नहीं करता स्वचालित रूप से ड्राइवर बाइनरी डाउनलोड करता है और इसे पैच करता है।
pip install undetected-chromedriver
या , यदि आप रोमांच महसूस कर रहे हैं, तो सीधे github के माध्यम से इंस्टॉल करें```
pip install git+https://www.github.com/ultrafunkamsterdam/undetected-chromedriver@master # replace @master with @branchname for other branches
मैं इश्यू ट्रैकर पर सीमाएँ लगाऊँगा। इसका दुरुपयोग बहुत लंबे समय से हो रहा है।
कोई अच्छी खबर?
हाँ, मैंने Undetected-Discussions खोला है, जो मुझे लगता है कि लंबे समय में हमारी बेहतर मदद करेगा।
यह पैकेज आपका IP पता नहीं छिपाता है, और मैं दोहराता हूँ, आपका IP पता नहीं छिपाता है, इसलिए जब आप किसी डेटासेंटर से चला रहे हों (छोटे से भी), तो संभावना अधिक है कि आप पास नहीं होंगे! इसके अलावा, अगर घर पर आपकी IP प्रतिष्ठा कम है, तो आप पास नहीं होंगे!
निम्नलिखित कोड को घर से, और एक डेटासेंटर से चलाना।```python import undetected_chromedriver as uc driver = uc.Chrome(headless=True,use_subprocess=False) driver.get('https://nowsecure.nl') driver.save_screenshot('nowsecure.png')
<div style="display:flex;flex-direction:row">
<img src="https://assets.kitploit.com/production/public/readmes/50956/c1bde1e3621f106c2504cf4ecb9cc9015b23340c7a9bd5f20364c27016b2dd40/4f02747809c3b183c8af8238f6858540057402adfe0f26d4fa9d646091fa5781-display-v1.webp" width="720"/>
<img src="https://assets.kitploit.com/production/public/readmes/50956/ac44f4c3d408a07f4a0b96b2eb37ecc58f3a9711f32b31a642c27e96ad2ab767/c94f4da9c540b7890c9350605f085bddc730ed40073c886ff94a2475bdfe806a-display-v1.webp" width="720"/>
</div>
<!--  -->
<!--  -->
## 3.5.0 ##
- selenium 4.10 ने कुछ समस्याएँ पैदा कीं। 3.5.0 संगत है और इसमें selenium 4.9 या उससे ऊपर का संस्करण पिन किया गया है। मैं अब <4.9 का समर्थन नहीं कर सकता।
- कंस्ट्रक्टर से कुछ kwargs हटा दिए गए हैं: service_args, service_creationflags, service_log_path।
- find_elements_recursive जनरेटर फ़ंक्शन जोड़ा गया। यह एक सुविधाजनक फ़ंक्शन है, क्योंकि कई वेबसाइटें अलग-अलग frames से अलग सामग्री प्रदान करती हैं, जिससे find_elements का उपयोग करना कठिन हो जाता है।
## 3.4.5 ##
- क्या हफ्ता था। मुझे लगा था कि 3.4.0 के साथ Automation-Detection एल्गोरिदम में हालिया प्रगति को मात दे दी गई है, लेकिन जाहिर है, कुछ OS-es के लिए इसने तत्वों के साथ इंटरैक्ट करते समय त्रुटि उत्पन्न की। एक अलग तरीके का उपयोग करके वापस जाना पड़ा, बग्स ठीक करने पड़े, और अंततः मैं अपने प्रारंभिक विचार पर कायम रह सका (+ बग्स को ठीक करना)।
- chrome 110 के अपडेट ने एक और आश्चर्य पैदा किया, इस बार HEADLESS उपयोगकर्ताओं के लिए।
- हालाँकि आधिकारिक तौर पर headless समर्थित नहीं है, फिर भी मैंने इसे पैच कर दिया!
- यह घोषणा करते हुए खुशी हो रही है कि यह अब UNDETECTED भी है (लेकिन फिर भी समर्थित नहीं है ;))
- यहाँ विशेष धन्यवाद [@mdmintz](https://github.com/mdmintz) और [@abdulzain6](https://github.com/abdulzain6) को।
- और विशेष धन्यवाद [@sebdelsol](https://github.com/sebdelsol) को, जिन्होंने issues अनुभाग में पूरी तरह से स्वेच्छा से मदद की, आप पागल होंगे :)
### 3.4.0 ###
**बड़ा अपडेट! सावधान रहें क्योंकि यह -संभावित रूप से- आपके कोड को तोड़ सकता है।**
* एंटी-डिटेक्शन तंत्र को फिर से लिखा गया है; वेरिएबल्स को हटाने और नाम बदलने के बजाय, हम उन्हें बनाए रखते हैं, लेकिन उन्हें पहले स्थान पर इंजेक्ट होने से रोकते हैं। यह हमें निकट भविष्य के लिए कम से कम डिटेक्शन से सुरक्षित रखेगा।
* फ़ाइल नामकरण को फिर से लिखा गया है, ताकि {randomstring}_chromedriver.exe की 1000 फ़ाइलों के साथ समाप्त न हो; इसके बजाय इसे केवल undetected_chromedriver.exe कहा जाता है।
* सफाई: compat, v2 फ़ाइलें और tests फ़ोल्डर हटा दिए गए।
### 3.2.0 ###
* कुछ विशिष्ट webdriver कोड, सामान्यतः पूछे जाने वाले प्रश्नों के उत्तर, समस्याएँ (pitfalls) + कुछ तरकीबें दिखाने वाला एक उदाहरण जोड़ा गया
मल्टीथ्रेडिंग की आवश्यकता को दूर करने के लिए।
### [>>>> उदाहरण कोड यहाँ <<<<](https://github.com/ultrafunkamsterdam/undetected-chromedriver/blob/master/example/example.py)
* WebElement.click_safe() विधि जोड़ी गई, जिसे आप किसी लिंक पर क्लिक करने के बाद डिटेक्ट होने पर आज़मा सकते हैं। इसके काम करने की गारंटी नहीं है।
* WebElement.children(self, tag=None, recursive=False) जोड़ा गया
चाइल्ड नोड्स को आसानी से प्राप्त/खोजने के लिए। उदाहरण:
```
body = driver.find_element('tag name', 'body')
# get the 6th child (any tag) of body, and grab all img's within (recursive).
images = body.children()[6].children('img', True)
srcs = list(map(lambda _:_.attrs.get('src'), images))
```
* example.py जोड़ा गया, जहाँ मैं लोगों को बेवकूफी भरे सवाल पूछने पर इंगित कर सकता हूँ
(नहीं, यह वास्तव में काफी शानदार है, सभी को इसे देखना चाहिए)
* lambda प्लेटफ़ॉर्म के लिए समर्थन जोड़ा गया
* x86_32 के लिए समर्थन जोड़ा गया
* linux2 के रूप में रिपोर्ट करने वाले सिस्टम के लिए समर्थन जोड़ा गया
* कुछ रीफैक्टरिंग
### 3.1.6 ###
### अभी भी मजबूती से पास हो रहा है ###
- use_subprocess अब डिफ़ॉल्ट रूप से True है। बहुत से लोग multiprocessing और __name__ == '__main__' को नहीं समझते हैं, और परीक्षण के बाद,
ऐसा लगता है कि अब chrome 104+ में इससे कोई फर्क नहीं पड़ता।
- no_sandbox जोड़ा गया, जो डिफ़ॉल्ट रूप से True है, और यह उस कष्टप्रद "you are using unsecure command line ..." बार के बिना।
- [Docker image](https://hub.docker.com/r/ultrafunk/undetected-chromedriver) अपडेट करें। अब आप वास्तविक ब्राउज़र विंडो देखने के लिए अपने कंटेनर में vnc या rdp कर सकते हैं
वास्तविक ब्राउज़र विंडो देख सकें
[](https://i.imgur.com/W7vriN9.mp4)
- बेशक, "regular" मोड भी काम करता है
[](https://i.imgur.com/2qSNyuK.mp4)
### 3.1.0 ###
**यह संस्करण `शायद` आपका कोड तोड़ दे, अपडेट से पहले परीक्षण करें!**
- **नई एंटी-डिटेक्शन लॉजिक जोड़ा गया!**
- v2 अब मुख्य मॉड्यूल बन गया है, इसलिए अब v2 के संदर्भों की कोई आवश्यकता नहीं है। इसका मतलब है कि अब आप सीधे उपयोग कर सकते हैं: ```python
import undetected_chromedriver as uc
driver = uc.Chrome()
driver.get('https://nowsecure.nl')
for backwards compatibility, v2 is not removed, but aliassed to the main module.
Fixed "welcome screen" nagging on non-windows OS-es. For those nagfetishists who ❤ welcome screens and feeding google with even more data, use Chrome(suppress_welcome=False).
replaced executable_path in constructor in favor of browser_executable_path
which should not be used unless you are the edge case (yep, you are) who can't add your custom chrome installation folder to your PATH
environment variable, or have an army of different browsers/versions and automatic lookup returns the wrong browser
"v1" (?) moved to _compat for now.
fixed dependency versions