Python第三方库undetected_chromedriver的使用

 更新时间:2023年01月12日 10:02:45   作者:Docda  
这篇文章主要给大家介绍了关于Python第三方库undetected_chromedriver的使用方法,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

undetected_chromedriver是专门针对浏览器识别做出来的拓展

直接使用undetected_chromedriver第三方库

if __name__ == '__main__':

	from selenium import webdriver
	from selenium.webdriver.common.by import By
	from selenium.webdriver.support.ui import WebDriverWait
	from selenium.webdriver.support import expected_conditions
	import undetected_chromedriver.v2 as uc
	
	chrome_options = uc.ChromeOptions()
	chrome_options.add_argument("--disable-extensions")
	chrome_options.add_argument("--disable-popup-blocking")
	chrome_options.add_argument("--profile-directory=Default")
	chrome_options.add_argument("--ignore-certificate-errors")
	chrome_options.add_argument("--disable-plugins-discovery")
	chrome_options.add_argument("--incognito")
	chrome_options.add_argument('--no-first-run')
	chrome_options.add_argument('--no-service-autorun')
	chrome_options.add_argument('--no-default-browser-check')
	chrome_options.add_argument('--password-store=basic')
	chrome_options.add_argument('--no-sandbox')
	
	driver = uc.Chrome(options=chrome_options, executable_path='./driver/chromedriver')
	
	driver.delete_all_cookies()
	driver.get("https://accounts.google.com/signin/v2/identifier?service=accountsettings&continue=https%3A%2F%2Fmyaccount.google.com%3Futm_source%3Daccount-marketing-page%26utm_medium%3Dgo-to-account-button&flowName=GlifWebSignIn&flowEntry=ServiceLogin")
	
	driver.find_element_by_xpath('//input[@type="email"]').send_keys(email)
	input = WebDriverWait(driver, 10).until(expected_conditions.element_to_be_clickable((By.XPATH, '//*[@id="identifierNext"]')))
	input.click()
	
	WebDriverWait(driver, 10).until(expected_conditions.element_to_be_clickable((By.XPATH, '//*[@id="password"]/div[1]/div/div[1]/input')))
	driver.find_element_by_xpath('//*[@id="password"]/div[1]/div/div[1]/input').send_keys(password)
	
	input = WebDriverWait(driver, 100).until(expected_conditions.element_to_be_clickable((By.XPATH, '//*[@id="passwordNext"]/div/button')))
	input.click()
	time.sleep(5)
	
	cookies = driver.get_cookies()
	cookies_arr = []
	for c in cookies:
	    if c['domain'].endswith('.google.com'):
	        cookies_arr.append(f'{c["name"]}={c["value"]}')
	
	driver.close()
	return "; ".join(cookies_arr)

使用seleniumwire的undetected_chromedriver拓展,好处是可以直接获取到浏览器的请求记录

from seleniumwire.undetected_chromedriver.v2 import Chrome, ChromeOptions
import time
if __name__ == '__main__':
    options = {}
    chrome_options = ChromeOptions()
    chrome_options.add_argument("--disable-gpu")
    chrome_options.add_argument("--incognito")
    chrome_options.add_argument("--disable-dev-shm-usage")
    # chrome_options.add_argument("--headless")
    chrome_options.add_argument(f"--proxy-server=http://192.168.100.24:60021")
    chrome_options.add_argument("--disable-popup-blocking")
    chrome_options.add_argument("--profile-directory=Default")
    chrome_options.add_argument("--ignore-certificate-errors")
    chrome_options.add_argument("--disable-plugins-discovery")
    chrome_options.add_argument('--no-first-run')
    chrome_options.add_argument('--no-service-autorun')
    chrome_options.add_argument('--no-default-browser-check')
    chrome_options.add_argument('--password-store=basic')
    chrome_options.add_argument('--no-sandbox')
    browser = Chrome(seleniumwire_options=options, options=chrome_options,executable_path='C:\Program Files\Google\Chrome\Application\chromedriver.exe',version_main=101)

    browser.get('https://portal.thecourierguy.co.za/track?ref=TCG107468416T')
    time.sleep(15)
    print(browser.page_source)
    for request in browser.requests:
        if request.response:
            print(request.path)
            if 'shipments' in request.path:
            	print(request.response.body)
            #获取内容为乱码可尝试用以下方法解码
            #gzip.decompress(request.response.body).decode("utf-8")

其中version_main可以根据浏览器版本指定版本号

注意:

      使用seleniumwire.undetected_chromedriver有一个大坑

      输入executable_path不会生效,因为在webdriver的源码是单独引用的undetected_chromedriver

所以不会接收到传入的executable_path。

而在undetected_chromedriver源码中,如果没有传入path就会每次启动去官网重新下载一个新的驱动器,再编译成可执行的文存放在以下目录

解决办法:

      在webdriver的源码中指定executable_path

这个带有前缀id的chromedriver是有执行权限的可执行程序啦

(直接使用官网下载的可能会没有权限,可以先直接运行一次,去到对应目录下面找到一个就可以永久使用啦<其他的可以删除>)

总结

到此这篇关于Python第三方库undetected_chromedriver使用的文章就介绍到这了,更多相关Python undetected_chromedriver使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于pip install uwsgi安装失败问题的解决方案

    关于pip install uwsgi安装失败问题的解决方案

    这篇文章主要介绍了关于pip install uwsgi安装失败问题的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Jupyter Notebook如何导入python文件时的问题

    Jupyter Notebook如何导入python文件时的问题

    这篇文章主要介绍了Jupyter Notebook如何导入python文件时的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Python使用指定端口进行http请求的例子

    Python使用指定端口进行http请求的例子

    今天小编就为大家分享一篇Python使用指定端口进行http请求的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python3.10和Python3.9版本之间的差异介绍

    Python3.10和Python3.9版本之间的差异介绍

    大家好,本篇文章主要讲的是Python3.10和Python3.9版本之间的差异介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下哦
    2021-12-12
  • Django中ORM基本应用与原理解析

    Django中ORM基本应用与原理解析

    Django的ORM模块是框架特色功能之一,它把数据表与Python类对应、表字段与类属性对应、类实例与数据记录对应,并将对类实例的操作映射到数据库中,这篇文章主要介绍了Django ORM基本应用与原理剖析,需要的朋友可以参考下
    2022-10-10
  • 用Python监控NASA TV直播画面的实现步骤

    用Python监控NASA TV直播画面的实现步骤

    本文分享一个名为"Spacestills"的开源程序,它可以用于查看 NASA TV 的直播画面(静止帧)
    2021-05-05
  • python中正则表达式findall的用法实例

    python中正则表达式findall的用法实例

    在写着自动化测试的脚本时重新复习了一下正则表达式findall()方法,下面这篇文章主要给大家介绍了关于python中正则表达式findall用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • tf.truncated_normal与tf.random_normal的详细用法

    tf.truncated_normal与tf.random_normal的详细用法

    本篇文章主要介绍了tf.truncated_normal与tf.random_normal的详细用法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 通过OpenCV实现对指定颜色的物体追踪

    通过OpenCV实现对指定颜色的物体追踪

    这篇文章主要介绍的是通过OpenCV实现对特定颜色的物体追踪,文中实验用的是绿萝的树叶。本文的示例代码讲解详细,对学习OPenCV有一定的帮助,感兴趣的小伙伴可以了解一下
    2021-12-12
  • python串口读取数据的实例

    python串口读取数据的实例

    这篇文章主要介绍了python串口读取数据的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09

最新评论