因为使用chromedriver会被检测出来,js环境不一样,解决办法一种是使用浏览器60版本driver2.33,或者手动启动浏览器
不建议使用79版本以上的浏览器,否则依然会被检测出来
手动启动chrome driver 步骤如下:
打开控制台,移动到浏览器安装位置
或者打开文件路径,在窗口上方路径输入框输入cmd回车,这样就启动cmd直接移动到该路径下
关闭所有chrome浏览器窗口
输入 chrome.exe --remote-debugging-port=9222
手打打开
输入网址 http://127.0.0.1:9222/json
会出现一个这样的页面,内容可能不同
如果不能打开,检查是否有其他浏览器窗口打开,如果有,全部关闭掉
然后再次尝试
如果还是打不开,就换个端口,测试是否能打开,如果可以,说明端口被占用
这时重启电脑后尝试,可能是因为浏览器驱动或者浏览器没有彻底关闭
from selenium import webdriver
import mouse
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
chrome_option = Options()
chrome_option.add_argument('--disable-extensions')
chrome_option.add_experimental_option('debuggerAddress', '127.0.0.1:9223')
browser = webdriver.Chrome(
# executable_path = '这里写chromedriver.exe的路径,如果放到python/script路径下将就不需要写这个参数了'
chrome_options = chrome_option
)
browser.get('https://www.zhihu.com/signin?next=%2F')
browser.find_element_by_css_selector('.SignFlow-tab:nth-child(2)').click()
browser.find_element_by_css_selector('.SignFlow-accountInput input').send_keys(Keys.CONTROL + 'a')
browser.find_element_by_css_selector('.SignFlow-accountInput input').send_keys('18604129501')
# 清空输入框内容 chrome不支持这个方法
# browser.find_element_by_css_selector('.SignFlow-password input').clear()
# 这里使用ctrl+a进行全选,这样就做到了清空重新输入的效果
browser.find_element_by_css_selector('.SignFlow-password input').send_keys(Keys.CONTROL + 'a')
# 输入密码
browser.find_element_by_css_selector('.SignFlow-password input').send_keys('liBO19980715')
mouse.move()
browser.find_element_by_css_selector('.Button.SignFlow-submitButton.Button--primary.Button--blue').click()