爬虫Google浏览器调用,跳过验证和账号输入

ops/2024/12/5 5:00:22/

import socket
import psutil
import subprocess

def kill_chrome_processes():
    """关闭所有Chrome进程"""
    for proc in psutil.process_iter(['name']):
        if 'chrome' in proc.info['name'].lower():
            try:
                proc.kill()
            except:
                pass
    print("已关闭所有Chrome进程")

def start_chrome_debug():
    """启动调试模式的Chrome"""
    chrome_path = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
    debug_dir = r"C:\ChromeDebug"
    
    cmd = f'"{chrome_path}" --remote-debugging-port=9222 --user-data-dir="{debug_dir}"'
    
    try:
        subprocess.Popen(cmd)
        print("Chrome已启动")
    except Exception as e:
        print(f"启动Chrome失败: {e}")

def check_port(port=9222):
    """检查端口是否开启"""
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    result = sock.connect_ex(('127.0.0.1', port))
    sock.close()
    return result == 0

def setup_chrome_debug():
    """设置Chrome调试环境"""
    print("正在检查Chrome调试环境...")
    
    if check_port():
        print("调试端口已经开启")
        return True
        
    print("正在重启Chrome...")
    kill_chrome_processes()
    start_chrome_debug()
    
    # 等待端口开启
    import time
    for i in range(5):
        if check_port():
            print("调试端口已成功开启")
            return True
        print(f"等待端口开启...({i+1}/5)")
        time.sleep(2)
    
    print("无法开启调试端口")
    return False

# 运行设置
if __name__ == "__main__":
    if setup_chrome_debug():
        print("Chrome调试环境设置成功,可以开始运行爬虫代码")
    else:
        print("设置失败,请检查Chrome安装路径或尝试手动启动")


http://www.ppmy.cn/ops/139188.html

相关文章

UIE与ERNIE-Layout:智能视频问答任务初探

内容来自百度飞桨ai社区UIE与ERNIE-Layout:智能视频问答任务初探: 如有侵权,请联系删除 1 环境准备 In [2] # 安装依赖库 !pip install paddlenlp --upgrade !pip install paddleocr --upgrade !pip install paddlespeech --upgrade In …

mac访达打开终端

选择文件夹打开 选中文件夹,然后右键即可: 在当前文件夹打开 在访达的当前文件夹长按option键 左下角出现当前文件夹路径 右键即可打开终端

react 组件生命周期

1. 挂载阶段(Mounting) 在函数式组件中,可以使用useEffect钩子函数来模拟componentDidMount的功能 import { useEffect, useState } from "react";const MyComponent () > {const [data, setData] useState(null);useEffect…

Pytest --capture 参数详解:如何控制测试执行过程中的输出行为

--capture 选项用于控制测试用例执行过程中标准输出(stdout)和标准错误输出(stderr)的捕获行为。 --capture 的选项值: fd(默认) 捕获文件描述符级别的输出(stdout 和 stderr&#x…

智能合约开发框架--Hardhat

Hardhat是一个编译、部署、测试和调试以太坊应用的开发环境。它可以帮助开发人员管理和自动化构建智能合约和dApps过程中固有的重复性任务,并围绕这一工作流程轻松引入更多功能。这意味着hardhat在最核心的地方是编译、运行和测试智能合约。 一、Hardhat的优点 Deb…

负载均衡指南:Nginx与HAProxy的配置与优化

在现代网络应用中,负载均衡是确保高可用性和高性能的关键技术。通过将流量分配到多台服务器上,负载均衡器能够有效提升系统的处理能力,并防止单点故障。本文将详细介绍两种常见的负载均衡器——Nginx和HAProxy的配置与优化方法,并…

iOS——MVC、MVP、MVVM

MVC MVC模式是将应用程序分成三个部分的一种架构模式,一般分为:Model(模型),View(视图),Controller(控制器)。各部分功能如下: Model:负责数据的管理,包括数据的结构和逻辑处理,以…

Ubantu系统非root用户安装docker教程

非root用户没有超级权限,根据docker安装教程安装完毕会发现无法拉取镜像,或者每次运行docker都需要加上sudo,输入密码验证。 解决办法如下: 1、创建docker用户组 sudo groupadd docker2、将非root用户(当前用户&am…