1. chromedriver.exe中的$cdc_asdjflasutopfhvcZLmcfl_特征
$cdc_是chromedriver.exe的一个特征之一,很多网站会通过检测是否有这个特征来判断是否是selenium
解决方案(windows):
安装vim工具,在cmd在运行gvim,然后把chromedriver.exe拖进去
按下/键输入cdc_搜索定位,回车,i键,修改为任意值,但是字母个数要对上。我这里把cdc改为了adc
保存即可。
经测试,淘系是有检测这个特征的,改了后可以绕过,当然淘系的风控是非常强,还有很多检测。
2. 您的浏览器限制了第三方Cookie,这将影响您正常登录,您可以更改浏览器的隐私设置,解除限制后重试。
experimentalFlags = ['same-site-by-default-cookies@2', 'cookies-without-same-site-must-be-secure@2']
chromeLocalStatePrefs = {'browser.enabled_labs_experiments': experimentalFlags}
self.options.add_experimental_option('localState', chromeLocalStatePrefs)
3. navigator.webdriver特征值
self.chrome_options = webdriver.ChromeOptions()
self.chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
self.chrome_options.add_experimental_option('useAutomationExtension',False)
self.driver = webdriver.Chrome(chrome_options=chrome_options)
self.driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',
{'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})
4, 指定浏览器的缓存UserData
self.options.add_argument("--user-data-dir=" + Config().chrome_UserData)
如果不使用指定UserData,每次selenium都会启动一个全新的浏览器,这样很容易被检测出来
我们可以把默认的User Data复制一份出来,默认的路径:
C:\Users\用户名\AppData\Local\Google\Chrome\User Data