मैं क्रोमेड्रिवर के साथ सेलेनियम का परीक्षण कर रहा हूं और मैंने देखा कि कुछ पेज यह पता लगा सकते हैं कि आप सेलेनियम का उपयोग कर रहे हैं, भले ही वहां कोई स्वचालन न हो। यहां तक कि जब मैं सिर्फ सेलेनियम और एक्सपीर के माध्यम से क्रोम का उपयोग करके मैन्युअल रूप से ब्राउज़ कर रहा हूं, तो मुझे अक्सर यह कहते हुए एक पृष्ठ मिलता है कि संदिग्ध गतिविधि का पता चला था। मैंने अपने उपयोगकर्ता एजेंट और मेरे ब्राउज़र फ़िंगरप्रिंट की जांच की है, और वे सभी सामान्य क्रोम ब्राउज़र के समान हैं।
जब मैं सामान्य क्रोम में इन साइटों को ब्राउज़ करता हूं तो सब कुछ ठीक काम करता है, लेकिन जिस क्षण मैं सेलेनियम का उपयोग करता हूं, मुझे पता चला है।
सिद्धांत रूप में क्रोमेड्रिवर और क्रोम को किसी भी वेबसर्वर के समान ही देखना चाहिए, लेकिन किसी तरह वे इसका पता लगा सकते हैं।
यदि आप चाहते हैं कि कुछ टेस्टकोड इसे आज़माएँ:
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=1, size=(1600, 902))
display.start()
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--disable-extensions')
chrome_options.add_argument('--profile-directory=Default')
chrome_options.add_argument("--incognito")
chrome_options.add_argument("--disable-plugins-discovery");
chrome_options.add_argument("--start-maximized")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.delete_all_cookies()
driver.set_window_size(800,800)
driver.set_window_position(0,0)
print 'arguments done'
driver.get('http://stubhub.com')
यदि आप stubhub के आसपास ब्राउज़ करते हैं तो आपको एक या दो अनुरोधों के भीतर पुनर्निर्देशित और 'ब्लॉक' कर दिया जाएगा। मैं इसकी जांच कर रहा हूं और मैं यह पता नहीं लगा सकता कि वे कैसे बता सकते हैं कि कोई उपयोगकर्ता सेलेनियम का उपयोग कर रहा है।
वह यह कैसे करते हैं?
संपादित करें:
मैंने फ़ायरफ़ॉक्स में सेलेनियम आईडीई प्लगइन स्थापित किया था और जब मैं सामान्य फ़ायरफ़ॉक्स ब्राउज़र में केवल अतिरिक्त प्लगइन के साथ stubhub.com पर गया तो मुझे प्रतिबंध लगा दिया गया।
संपादित करें:
जब मैं HTTP अनुरोधों को वापस भेजने के लिए फ़िडलर का उपयोग करता हूं, तो मैंने देखा है कि प्रतिक्रिया शीर्षक में अक्सर 'नकली ब्राउज़र' के अनुरोधों में 'नो-कैश' होता है।
संपादित करें:
इस तरह के परिणाम यह पता लगाने का एक तरीका है कि मैं जावास्क्रिप्ट से एक सेलेनियम वेबड्राइवर पृष्ठ में हूं, यह सुझाव देता है कि जब आप वेबड्राइवर का उपयोग कर रहे हैं, तो यह पता लगाने का कोई तरीका नहीं होना चाहिए। लेकिन यह सबूत अन्यथा पता चलता है।
संपादित करें:
साइट उनके सर्वर पर एक फिंगरप्रिंट अपलोड करती है, लेकिन मैंने जांच की और क्रोमियम का फिंगरप्रिंट क्रोम का उपयोग करते समय फिंगरप्रिंट के समान है।
संपादित करें:
यह फिंगरप्रिंट पेलोड में से एक है जो वे अपने सर्वर पर भेजते हैं
{"appName":"Netscape","platform":"Linuxx86_64","cookies":1,"syslang":"en-US","userlang":"en-US","cpu":"","productSub":"20030107","setTimeout":1,"setInterval":1,"plugins":{"0":"ChromePDFViewer","1":"ShockwaveFlash","2":"WidevineContentDecryptionModule","3":"NativeClient","4":"ChromePDFViewer"},"mimeTypes":{"0":"application/pdf","1":"ShockwaveFlashapplication/x-shockwave-flash","2":"FutureSplashPlayerapplication/futuresplash","3":"WidevineContentDecryptionModuleapplication/x-ppapi-widevine-cdm","4":"NativeClientExecutableapplication/x-nacl","5":"PortableNativeClientExecutableapplication/x-pnacl","6":"PortableDocumentFormatapplication/x-google-chrome-pdf"},"screen":{"width":1600,"height":900,"colorDepth":24},"fonts":{"0":"monospace","1":"DejaVuSerif","2":"Georgia","3":"DejaVuSans","4":"TrebuchetMS","5":"Verdana","6":"AndaleMono","7":"DejaVuSansMono","8":"LiberationMono","9":"NimbusMonoL","10":"CourierNew","11":"Courier"}}
सेलेनियम और क्रोम में इसका समान है
संपादित करें:
वीपीएन एक ही उपयोग के लिए काम करते हैं लेकिन पहले पृष्ठ को लोड करने के बाद पता लगाया जाता है। स्पष्ट रूप से सेलेनियम का पता लगाने के लिए कुछ जावास्क्रिप्ट चलाए जा रहे हैं।
distill
बॉट डिटेक्शन तकनीक का उपयोग करती है और akamaitechnologies.com
सीडीएन का उपयोग सामग्री को अलग ips से वितरित करती है 95.100.59.245
, जैसे 104.70.243.66
,23.202.161.241