首页 > 其他分享 >selenium无头浏览器,禁用图片,禁用js,切换UA,反爬

selenium无头浏览器,禁用图片,禁用js,切换UA,反爬

时间:2023-10-20 13:58:55浏览次数:35  
标签:webdriver -- 禁用 selenium argument js add options experimental

from selenium import webdriver
from fake_useragent import UserAgent

ua = UserAgent().random
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox')  # 停用沙箱
options.add_argument('--disable-gpu')  # 禁用GPU实现加速
options.add_argument('--ignore-certificate-errors')  # 忽略证书错误
options.add_argument('–hide-scrollbars') # 隐藏滚动条, 应对一些特殊页面
options.add_experimental_option('excludeSwitches', ['enable-automation']) # 禁用浏览器正在被自动化程序控制的提示
options.add_argument('–incognito') # 隐身模式(无痕模式)
options.add_argument('--disable-dev-shm-usage')
# 修改User-Agent, 无头和正常的UA是不一样的
options.add_argument('user-agent=' + ua)
# 这种方式在非无头Headless模式下是生效的
# prefs = {
# 'profile.default_content_settings': {
# 'profile.default_content_setting_values': {
# 'images': 2, # 不加载图片
# 'javascript': 2, # 不加载JS
# "User-Agent": ua, # 更换UA
# }}}
# options.add_experimental_option("prefs", prefs)

# 这种方式在无头Headless模式下是生效的, 非无头Headless模式下也是生效的。
options.add_argument('blink-settings=imagesEnabled=false')

# 添加代理
# options.add_argument(f"--proxy-server={ip}:port")     #不需要http://,只保留ip和端口号

# 无界面浏览器
options.add_argument('--window-size=1920,1080')
options.add_argument('--headless')

# 隐藏滚动条, 应对一些特殊页面
options.add_argument('--hide-scrollbars')

# 设备名称
mobileEmulation = {'deviceName': 'iPhone X'}
options.add_experimental_option('mobileEmulation', mobileEmulation)

# [如何正确移除Selenium中的 window.navigator.webdriver](https://zhuanlan.zhihu.com/p/117506307)
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
# 初始化实例
browser = webdriver.Chrome(executable_path="C:/chrome/chromedriver.exe", options=options)

browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
    "source": """
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })
  """
})

browser.maximize_window()
# 这个网页可以显示浏览器的信息,这样我们就可以看到我们的UA信息,
url = "https://httpbin.org/get?show_env=1"
browser.get(url)

  

 

def get_driver():
    options = webdriver.ChromeOptions()
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    options.add_argument('user-agent=' + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36')
    options.add_argument('--window-size=1920,1080')
    options.add_argument('--headless')
    options.add_argument(f'--ignore-certificate-errors')
    options.add_argument('--disable-gpu')
    options.add_argument('--hide-scrollbars')
    mobileEmulation = {'deviceName': 'iPhone X'}
    options.add_experimental_option('mobileEmulation', mobileEmulation)
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    driver = webdriver.Chrome(executable_path="./../bin/chromedriver.exe", options=options)

    driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
        "source": """
        Object.defineProperty(navigator, 'webdriver', {
          get: () => undefined
        })
      """
    })
    driver.maximize_window()
    wait = driver.implicitly_wait(10)
    wait = WebDriverWait(driver, 10)
    return driver, wait 

  

 

 

火狐

firefox_options = webdriver.FirefoxOptions()
firefox_options.add_argument('--headless')  # 无头
firefox_options.add_argument('--disable-gpu')  # 避免bug
firefox_options.set_preference('permissions.default.image', 2)  # 禁用图片
profile.set_preference('network.proxy.type', 1)
profile.set_preference('network.proxy.http', IP)  # IP为你的代理服务器地址:如‘127.0.0.0’,字符串类型
profile.set_preference('network.proxy.http_port', PORT)  # PORT为代理服务器端口号:如,9999,整数类型
browser = webdriver.Firefox(firefox_options=firefox_options)
browser.get(response.url)

  

 

标签:webdriver,--,禁用,selenium,argument,js,add,options,experimental
From: https://www.cnblogs.com/pythonClub/p/17776876.html

相关文章

  • 谈谈selenium中的cookie操作
    实例演示以登录网易云音乐为例分两步走获取cookiesfromseleniumimportwebdriverfrompprintimportpprintdriver=webdriver.Chrome()driver.maximize_window()driver.get('https://music.163.com/')driver.delete_all_cookies()#此处只是演示api,可以不写的inpu......
  • Python3+selenium3+Firefox 设置浏览器headless模式运行+下载文件
    设置Firefoxheadless模式   defsetUp(self):#Firefoxheadless模式运行options=webdriver.FirefoxOptions()options.add_argument('-headless')self.driver=webdriver.Firefox(options=options)self.driver.implicitly_wait(30)......
  • selenium设置火狐浏览器为headless(无头模式)
    selenium已经停止了对PhantomJS的支持,只能调用Firefox或者Chrome浏览的无头模式(即没有浏览器界面)。使用步骤:安装Firefox浏览器firefox历年版本安装包的官方镜像地址:https://download-installer.cdn.mozilla.net/pub/firefox/releases/安装geckodriver驱动(1)下载geckodriver火狐所......
  • 谈谈selenium4.0中的相对定位
    相对定位历史2021-10-13发布的selenium4.0开始引入,selenium3.X是没有的implementrelativelocatorforfind_element(#9902)4.10维护了下Improvenearrelativelocatorbehavior(#11290)其他都是文档、异常信息方面的处理实例演示D:\selenium\demo\relative......
  • JS加密:JavaScript代码加密混淆
    JS加密,即JavaScript代码加密混淆,是指对js代码进行数据加密、逻辑混淆。使js代码不能被分析、复制、盗用,以达到保护js代码、保护js产品、保护js知识产权的目的。JS加密定义JS加密,即:JavaScript代码加密混淆、JavaScript代码混淆加密。JavaScript,简称JS,加密指对JS代码进行密文化处理......
  • python中json模块
    importjsonstring='{"name":"xxx","age":18,"object":[{"数学":100,"语文":90,"英语":70}]}'print(string)print(type(string))#将json字符串转为python字典data_dic=json.loads(string)print......
  • 20个js工具函数助力高效开发
    1、校验数据类型exportconsttypeOf=function(obj){returnObject.prototype.toString.call(obj).slice(8,-1).toLowerCase()}示例:typeOf('树哥')//stringtypeOf([])//arraytypeOf(newDate())//datetypeOf(null)//nulltypeOf(true)//boolean......
  • go 格式化json
    packagemainimport("bytes""encoding/json""fmt")funcmain(){//原始JSON字符串varjsonStr=[]byte(`{"Name":"Gopher","Title":"Programmer","Contact":......
  • JS加密/解密那些必须知道的事儿
    一直以来,字符串的编码问题对于新手程序员来说,或者平常不太涉猎这方面的程序员来说,是犹如灵异学一样的存在。经常会遇到莫名其妙的编码问题,导致的各种的无法理解的错误。 今天,本问就来介绍一下作者所知晓的一切的字符编码知识。0x1.初识ASCII 说起字符串编码,不得不说到现代计算机的......
  • NodeJS之父Ryan Dahl:我不想被认为是一个JavaScript专家
    NodeJS之父RyanDahl:我不想被认为是一个JavaScript专家    被称为Node之父的RyanDahl在2012年离开了Node项目,后来加入Google的Brain团队,从事深度学习方面的研究,主要专注在图像的着色和超解像技术上。拥有深厚数学功底的Ryan经历了从Web开发到深度学习的跨越,还主导了......