首页 > 其他分享 >爬虫自动化之DRISSIONPAGE实现随时切换代理IP

爬虫自动化之DRISSIONPAGE实现随时切换代理IP

时间:2024-06-11 21:45:37浏览次数:13  
标签:DRISSIONPAGE get IP 爬虫 text tab ip co browser

爬虫自动化之drissionpage实现随时切换代理ip

https://blog.csdn.net/qq_32334103/article/details/126133862

下载 SwitchyOmega地址: https://github.com/FelisCatus/SwitchyOmega/releases

也可以直接用压缩文件打开,然后解压到当前文件夹

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 import platform   from DrissionPage import ChromiumPage, ChromiumOptions from loguru import logger     def get_free_ip():     url = "https://www.zdaye.com/free/?ip=&adr=&checktime=&sleep=&cunhuo=&dengji=1&nadr=&https=&yys=&post=&px="     browser.get(url, retry=3, interval=1, timeout=15)     ip_ports = []     for tr in browser.eles('x://table[@id="ipc"]//tr')[1:]:         tds = [td.text for td in tr.eles("x://td")]         ip_ports.append((f"{tds[0]}:{tds[1]}", tds[3]))     print(len(ip_ports), ip_ports)     return ip_ports     def switch_ip(ip_port=None):     global set_proxy     if ip_port:         # 设置proxy         ip, port = ip_port.split(":")         tab = browser.new_tab()         tab.get("chrome-extension://padekgcemlokbadohgkifijomclgjgif/options.html#!/profile/proxy")         tab.ele('x://input[@ng-model="proxyEditors[scheme].host"]').input(ip, clear=True)         tab.ele('x://input[@ng-model="proxyEditors[scheme].port"]').input(port, clear=True)         tab.ele('x://a[@ng-click="applyOptions()"]').click()         tab.wait(1)         # 提示框         txt = tab.handle_alert()         print("提示框", txt)         tab.handle_alert(accept=False)         if not omega_proxy:             # 切换proxy             tab.get("chrome-extension://padekgcemlokbadohgkifijomclgjgif/popup/index.html#")             tab.wait(1)             tab.ele('x://span[text()="proxy"]').click()             set_proxy = True     else:         tab = browser.new_tab()         tab.get("chrome-extension://padekgcemlokbadohgkifijomclgjgif/popup/index.html#")         tab.ele('x://span[text()="[直接连接]"]').click()     if len(browser.tab_ids) > 1:         print("当前tab个数"len(browser.tab_ids))         tab.close()     if platform.system().lower() == 'windows':     co = ChromiumOptions()  # .set_paths(browser_path=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe") else:     co = ChromiumOptions().set_paths(browser_path=r"/opt/google/chrome/google-chrome")     co.headless(True)  # 设置无头加载  无头模式是一种在浏览器没有界面的情况下运行的模式,它可以提高浏览器的性能和加载速     # co.incognito(True)  # 无痕隐身模式打开的话,不会记住你的网站账号密码的     co.set_argument('--no-sandbox')  # 禁用沙箱 禁用沙箱可以避免浏览器在加载页面时进行安全检查,从而提高加载速度 默认情况下,所有Chrome 用户都启用了隐私沙盒选项  https://zhuanlan.zhihu.com/p/475639754     co.set_argument("--disable-gpu")  # 禁用GPU加速可以避免浏览器在加载页面时使用过多的计算资源,从而提高加载速度     co.set_user_agent(user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36')  # 设置ua   co.set_timeouts(666) co.set_local_port(9211) # 1、设置switchyOmega插件 co.add_extension(r'C:\Users\Ad\Desktop\proxy_switchyomega-2.5.20') browser = ChromiumPage(co)   # 2、重置switchyOmega插件 omega_proxy = False switch_ip() browser.get("https://www.ip138.com/", retry=0) html_text = browser.get_frame('x://div[@class="hd"]//iframe').ele('text:您的iP地址是').text logger.success(f">>>>当前的ip {html_text}")   # 3、随机切换代理ip # ip_all = get_free_ip() ip_all = [{"ip""10.1.3.56""port"7890"expire_time""2024-04-27 22:24:00"}] for ips in ip_all:     logger.info(f"~~~切换ip,now {ips['ip']}")     # 重置switchyOmega插件     switch_ip(f"{ips['ip']}:{ips['port']}")     browser.wait(1)     try:         browser.get("https://www.baidu.com/", retry=0)         browser.get("https://www.ip138.com/", retry=0)         browser.get("https://www.google.com/", retry=0)         html_text = browser.get_frame('x://div[@class="hd"]//iframe').ele('text:您的iP地址是').text         logger.success(f">>>>>>>>切换代理成功 {html_text}")     except Exception as err:         logger.error(f"----------切换代理失败 dp {err}")     browser.wait(10) browser.quit()

标签:DRISSIONPAGE,get,IP,爬虫,text,tab,ip,co,browser
From: https://www.cnblogs.com/huangcong/p/18242770

相关文章

  • [DP] [倍增优化] Luogu P1081 [NOIP2012 提高组] 开车旅行
    [NOIP2012提高组]开车旅行题目描述小\(\text{A}\)和小\(\text{B}\)决定利用假期外出旅行,他们将想去的城市从$1$到\(n\)编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市\(i\)的海拔高度为\(h_i\),城市\(i\)和城市\(j\)之间的距......
  • 基本数据类型 String,null 和 undefined,运算符,流程控制,JavaScript之数组,数组常用
    Ⅰ基本数据类型String【一】String类型String类型就是字符串类型【二】定义变量【1】常规变量var变量名="变量值";//一般用这种var变量名='变量值';不支持三引号【2】可以先声明不赋值先用varb;再对变量b赋值varb='6';【三】字符串的格式化输出语法......
  • 神奇的JavaScript弱等价类型转换
    JavaScript语言特性-类型转换JavaScript这门语言的类型系统从来没有它表面看起来的那样和善,虽然比起Java、C#等一众强类型语言,它的弱类型使用起来似乎是如此便利,但正因为它极高的自由度,所以才会衍生出令人摸不着头脑的荒诞行为。举个例子,虽然我们都知道一个包含内容的字符串会......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript美食网站(零食)
    HTML+CSS+JS【美食网站】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript购物商城(华为手机)
    HTML+CSS+JS【购物商城】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......
  • C# JavaScriptSerializer序列化时的时间处理详解
    原文链接:https://www.jb51.net/article/122143.htm输出如下图所示: 猜测这里是由于js初始化时间的时候往往是向1970/01/01添加毫秒数,JavaScriptSerializer进行序列化的时候也会格式化为距离1970/01/01到当该时间点GMT+0时间的毫秒数,如果直接反序列化可以看到少了8小时,且......
  • 云微客助力商企获客,多账号共同打造商户形象IP
    老板还在出镜当网红?亦或是大量招人写文案、剪视频?别傻了,5G互联网时代,只需要一张营业执照即可开通蓝V,还可以申请几十个员工号,仅需要一个人就可以进行多账号管理,发布数以百计的视频。实体企业做短视频的核心,就是要账号足够多、视频足够多,这些难题云微客AI剪辑矩阵系统一并拿下。......
  • 爬虫 | xpath + lxml 库 解析爬取网页
    lxml库是用来解析XML和HTML网页内容的Xpath库则是用来查询数据(XPath表达式是一种在XML文档中查找信息的语言,它同样适用于HTML文档)简单示例:#先pipinstalllxmlimportrequestsfromlxmlimportetree#etree主要是用来解析和操作XML/HTML文档#步骤3:获取......
  • 实现抖音视频滑动功能vue3+swiper
    首先,你需要安装和引入Swiper库。可以使用npm或者yarn进行安装。pnpminstallswiper然后在Vue组件中引入Swiper库和样式。//导入Swiper组件和SwiperSlide组件,用于创建轮播图import{Swiper,SwiperSlide}from'swiper/vue';//导入Swiper的CSS样式,确保轮播图......
  • JavaScript中什么是类,如何使用?
    在JavaScript中,类是一种用于创建对象的模板。它定义了对象的属性和方法,并可以通过实例化来创建具体的对象。类提供了一种结构化的方式来组织和管理代码,使得代码更易于理解和维护。下面我将通过三个例子来详细说明JavaScript中类的概念和使用方法。例子1:创建一个表示人的类cl......