#本代码注释内容均为有效内容,但不同方法之间不能共存,使用其中一种需要将其他内容注释掉
from selenium import webdriver
from time import sleep
#无可视化界面
from selenium.webdriver.chrome.options import Options
#规避检测selenium(老方法)
# from selenium.webdriver import ChromeOptions
#规避检测selenium(新方法)
# from selenium.webdriver import Chrome
#google不显示执行操作过程
# chrome_Options = Options()
# chrome_Options.add_argument('--headless')
# chrome_Options.add_argument('--disable-gpu')
#规避检测(老方法)
# Options = ChromeOptions()
# Options.add_experimental_option('excludeSwitches',['enable-automation'])
#规避检测(新方法)
# options = webdriver.ChromeOptions()
# options.add_experimental_option("excludeSwitches", ["enable-automation"])
# options.add_experimental_option('useAutomationExtension', False)
# # pro = Chrome(options=chrome_Options)
# pro = webdriver.Chrome(executable_path='./chromedriver.exe',options=options)#实例化一个浏览器对象,打开浏览器
# pro.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
# "source": """
# Object.defineProperty(navigator, 'webdriver', {
# get: () => undefined
# })
# """
# })
#chorme_options属性过失不能用,老方法同时使用无头浏览器和检测规避需改成如下形式
#同时进行无头浏览器和检测规避
from selenium.webdriver import ChromeOptions
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_argument('--headless')
option.add_argument('--disable-gpu')
pro = webdriver.Chrome(executable_path='./chromedriver.exe',options=option)#实例化一个浏览器对象,打开浏览器
#以下代码不要注释,测试用
#打开浏览器
url = 'https://blog.csdn.net/jdsydwr/article/details/120388347'
pro.get(url)
print(pro.page_source)
sleep(2)
pro.quit()
注意老方法应该可以应用于老版本的chrome中,最新的chorme中老方法虽然不提示但仍然是被检测的,所以在新版本的chrome中要使用新方法。
如果问题解决,希望可以点个赞👍,谢谢
|