2025年2月25日 星期二 甲辰(龙)年 腊月廿五 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

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

时间:06-24来源:作者:点击数:30
爬虫自动化之drissionpage实现随时切换代理ip

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

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

  • 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(6, 6, 6)
  • 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()
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门