Python第三方库undetected_chromedriver的使用

作者:Docda 时间:2022-12-06 14:29:27 

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

Python第三方库undetected_chromedriver的使用

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

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

Python第三方库undetected_chromedriver的使用

解决办法:

      在webdriver的源码中指定executable_path

Python第三方库undetected_chromedriver的使用

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

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

来源:https://blog.csdn.net/qq_43035475/article/details/125644970

标签:undetected,chromedriver,python,第三方库
0
投稿

猜你喜欢

  • mysql中GROUP_CONCAT的使用方法实例分析

    2024-01-28 01:01:26
  • JavaScript生成.xls文件的代码

    2024-04-22 22:17:34
  • 解析:轻松了解 MySQL中损坏的MyISAM表

    2009-02-23 17:30:00
  • 解析PyCharm Python运行权限问题

    2021-04-05 03:52:51
  • python开发的小球完全弹性碰撞游戏代码

    2023-11-01 07:47:11
  • Python基于pillow库实现生成图片水印

    2021-08-01 10:45:38
  • Python内存管理实例分析

    2021-06-13 01:39:21
  • python使用xlrd模块读写Excel文件的方法

    2022-02-14 16:54:55
  • 根据多条件查询临时表 想得到不同结果集的方法

    2024-01-23 22:49:37
  • 配置mysql允许远程连接的方法

    2024-01-24 00:31:56
  • 使用get方式提交表单在地址栏里面不显示提交信息

    2024-06-05 09:35:10
  • python 实现简单的吃豆人游戏

    2023-12-02 22:00:59
  • SQL语言查询基础:连接查询 联合查询 代码

    2024-01-17 07:25:55
  • pycharm修改文件的默认打开方式的步骤

    2023-04-18 10:38:23
  • python机器学习理论与实战(二)决策树

    2021-09-24 06:20:33
  • asp什么情况下用响应缓冲会提高运行速度?

    2010-07-14 21:02:00
  • 详解python OpenCV学习笔记之直方图均衡化

    2022-12-29 20:37:22
  • mysql中json_extract的使用方法实例详解

    2024-01-19 04:28:04
  • 多个域名后缀同时查询的域名查询系统代码

    2008-05-20 11:53:00
  • Python3之文件读写操作的实例讲解

    2023-07-27 15:57:45
  • asp之家 网络编程 m.aspxhome.com