Как Selenium использует IP-прокси для сканирования веб-страниц (реализация без аутентификации, реализация с аутентификацией по учетной записи и паролю)
Как Selenium использует IP-прокси для сканирования веб-страниц (реализация без аутентификации, реализация с аутентификацией по учетной записи и паролю)

Версия

  • Python 3.x

Используйте Selenium для реализации HTTP-прокси без учетной записи и пароля.

  • Недавно друг в частном порядке заговорил со мной о вопросе Selenium. какиспользоватьIP прокси руководитьрептилия, я подумал про себя, что это не очень просто, отпусти это немедленно GPT Помогите написать один:
Пусть GPT напишет один для меня
Пусть GPT напишет один для меня
  • Полный код выглядит следующим образом:
Язык кода:Python
копировать
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType

# настраиватьактерское мастерствоIP
proxy_ip = "your_proxy_ip"
proxy_port = "your_proxy_port"

# настраиватьактерское мастерство
proxy = Proxy()
proxy.proxy_type = ProxyType.MANUAL
proxy.http_proxy = f"{proxy_ip}:{proxy_port}"
proxy.ssl_proxy = f"{proxy_ip}:{proxy_port}"

# Настройка параметров браузера
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=http://{}:{}'.format(proxy_ip, proxy_port))

# Запустить браузер
driver = webdriver.Chrome(executable_path='path/to/chromedriver', options=chrome_options)

# Посетите официальный сайт Baidu
driver.get('https://www.baidu.com')

# Выполняйте здесь свои операции, такие как поиск элементов, ввод ключевых слов для поиска и т. д.

# Закрыть браузер
driver.quit()
  • Код, предоставляемый GPT, иногда неточен, и для успешной работы его необходимо просто изменить:
Язык кода:Python
копировать
import time

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

# настраиватьактерское мастерствоIP
proxy_ip = "127.0.0.1"
proxy_port = "1080"

# Настройка параметров браузера
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=http://{}:{}'.format(proxy_ip, proxy_port))

# Запустить браузер
chrome_service = Service("./chromedriver.exe")
driver = webdriver.Chrome(service=chrome_service, options=chrome_options)

# Посетите официальный сайт Baidu
driver.get('https://www.baidu.com')

# Выполняйте здесь свои операции, такие как поиск элементов, ввод ключевых слов для поиска и т. д.
time.sleep(30)

# Закрыть браузер
driver.quit()
Нет пароля к аккаунту Selenium актерское мастерство
Нет пароля к аккаунту Selenium актерское мастерство

Я никогда не думал, что добавление пароля учетной записи приведет к увеличению сложности + N

  • После передачи кода другу,Он вдруг ответил,Мой IP прокси У меня была учетная запись и пароль. Я подумал, что это будет не просто, я бы просто добавил учетную запись и пароль. Потом я развернулся и сдал задание. GPT,GPT Мне был предоставлен другой код (приведенный ниже код был доработан и все еще имеет ту же проблему, что и выше):

Решение HTTP-прокси с учетной записью и паролем, предоставленными GPT

Язык кода:Python
копировать
import time

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.proxy import Proxy, ProxyType

# настраиватьактерское мастерствоIP
proxy_ip = "your_proxy_ip"
proxy_port = "your_proxy_port"
proxy_username = "your_proxy_username"
proxy_password = "your_proxy_password"

# настраиватьактерское мастерство
proxy = Proxy()
proxy.proxy_type = ProxyType.MANUAL
proxy.http_proxy = f"{proxy_ip}:{proxy_port}"

# Конфигурацияактерское Сертификационная информация мастерства
capabilities = webdriver.DesiredCapabilities.CHROME.copy()
proxy_auth = f"{proxy_username}:{proxy_password}"
capabilities['proxy'] = {
    'httpProxy': proxy.http_proxy,
    'ftpProxy': proxy.http_proxy,
    'sslProxy': proxy.http_proxy,
    'proxyType': 'MANUAL',
    'socksUsername': proxy_username,
    'socksPassword': proxy_password
}

# Настройка параметров браузера
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_argument('--proxy-server=http://{}:{}'.format(proxy_ip, proxy_port))

# Запустить браузер
chrome_service = Service("./chromedriver.exe")
driver = webdriver.Chrome(service=chrome_service, options=chrome_options)

# Посетите официальный сайт Baidu
driver.get('https://www.baidu.com')

# Выполняйте здесь свои операции, такие как поиск элементов, ввод ключевых слов для поиска и т. д.
time.sleep(30)

# Закрыть браузер
driver.quit()

IP прокси

  • После того, как код написан, менять местное нормальное и стабильное актерское не хочется. конфигурация мастерства,использовать получил бесплатный IP, который в последнее время часто использую прокси (универсальный прокси-сервер), поддерживает основной протокол http/https/socks5 и использует API для быстрого получения IP-адреса для достижения 50-300ms Время отклика в основном гарантировано 99.99% Доступен IP, нуждающиеся друзья могут попробовать.
  • После подачи заявки на IP-прокси замените пароль учетной записи в коде и нажмите «Выполнить». Я обнаружил, что аутентификация не пройдена:
  • Чтобы исключить проблему с самим прокси, используйте curl Команда подтверждения IP прокси Если к нему можно получить нормальный доступ, это означает, что это проблема использования. После 15 минут поиска и проверки я наконец нашел решение. - использовать Selenium-Chrome-HTTP-Private-Proxy。

Selenium-Chrome-HTTP-Private-Proxy HTTP-прокси-решение

  • По умолчанию параметр Chrome --proxy-server="http://ip:port" не поддерживает настройку аутентификации по имени пользователя и паролю. Поэтому «Селен + Chrome Driver"Не могущийиспользоватьHTTP Basic HTTP-прокси для аутентификации. Альтернативным методом является использование аутентификации по IP-адресу, но в домашней сетевой среде большинство пользователей используют доступ к сети ADSL, IP-адрес меняется, и аутентификация привязки IP-адреса не может быть использована. Поэтому существует острая необходимость найти решение для Chrome для автоматической реализации аутентификации по имени пользователя и паролю HTTP-прокси.
  • Кто-то на Stackoverflow поделился способом использования плагина Chrome для автоматической настройки актерского мастерства. решение для аутентификации по паролю мастерства очень хорошее,Подробный адрес:http://stackoverflow.com/questions/9888323/how-to-override-basic-authentication-in-selenium2-with-java-using-chrome-driver
  • Основываясь на этой идее, технический персонал Кунжипенга использовал Python для реализации автоматизированного процесса создания плагина Chrome, то есть автоматического создания плагина прокси-сервера Chrome на основе указанного прокси-сервера «имя пользователя:пароль@ip:порт», а затем использования это в "Selenium + Chrome Драйвер», установив плагин «калибровкаактерское». мастерство Конфигурация Функция(Адрес плагина:https://github.com/RobinDev/Selenium-Chrome-HTTP-Private-Proxy

Как достичь

  • 1. Посетите адрес плагина, чтобы загрузить плагин.,Поместите его в каталог проекта для использования.
  • 2. Напишите код
Язык кода:Python
копировать
import time

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service


def create_proxyauth_extension(proxy_host, proxy_port,
                               proxy_username, proxy_password,
                               scheme='http', plugin_path=None):
    """Proxy Auth Extension

    args:
        proxy_host (str): domain or ip address, ie proxy.domain.com
        proxy_port (int): port
        proxy_username (str): auth username
        proxy_password (str): auth password
    kwargs:
        scheme (str): proxy scheme, default http
        plugin_path (str): absolute path of the extension

    return str -> plugin_path
    """
    import string
    import zipfile

    if plugin_path is None:
        plugin_path = 'Selenium-Chrome-HTTP-Private-Proxy.zip'

    manifest_json = """
    {
        "version": "1.0.0",
        "manifest_version": 2,
        "name": "Chrome Proxy",
        "permissions": [
            "proxy",
            "tabs",
            "unlimitedStorage",
            "storage",
            "<all_urls>",
            "webRequest",
            "webRequestBlocking"
        ],
        "background": {
            "scripts": ["background.js"]
        },
        "minimum_chrome_version":"22.0.0"
    }
    """

    background_js = string.Template(
        """
        var config = {
                mode: "fixed_servers",
                rules: {
                  singleProxy: {
                    scheme: "${scheme}",
                    host: "${host}",
                    port: parseInt(${port})
                  },
                  bypassList: ["foobar.com"]
                }
              };

        chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});

        function callbackFn(details) {
            return {
                authCredentials: {
                    username: "${username}",
                    password: "${password}"
                }
            };
        }

        chrome.webRequest.onAuthRequired.addListener(
                    callbackFn,
                    {urls: ["<all_urls>"]},
                    ['blocking']
        );
        """
    ).substitute(
        host=proxy_host,
        port=proxy_port,
        username=proxy_username,
        password=proxy_password,
        scheme=scheme,
    )
    with zipfile.ZipFile(plugin_path, 'w') as zp:
        zp.writestr("manifest.json", manifest_json)
        zp.writestr("background.js", background_js)

    return plugin_path


def configure_headless_browser(proxy_config):
    chrome_options = Options()
    chrome_options.add_argument("--start-maximized")
    proxyauth_plugin_path = create_proxyauth_extension(
        proxy_host=proxy_config[0],
        proxy_port=proxy_config[1],
        proxy_username=proxy_config[2],
        proxy_password=proxy_config[3]
    )
    chrome_options.add_extension(proxyauth_plugin_path)
    # chrome_options.add_argument('--headless')
    # chrome_options.add_argument(
    #     "user-agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'")
    chrome_service = Service("./chromedriver.exe")
    return webdriver.Chrome(service=chrome_service,options=chrome_options)


# настраиватьактерское мастерствоIP
proxy_config = ["175.153.142.127""", "10033", "9ER62CtIr", "fGGVvqedX"]

# Запустить браузер
driver = configure_headless_browser(proxy_config)

# Посетите официальный сайт Baidu
driver.get('https://www.baidu.com')

# Выполняйте здесь свои операции, такие как поиск элементов, ввод ключевых слов для поиска и т. д.
time.sleep(30)

# Закрыть браузер
driver.quit()
  • Нажмите «Тестовый запуск».,Запустить успешно,И подтвердите правильность использованияактерского мастерствоIP:

Подвести итог

  • В этой статье представлены Selenium использовать без учетной записи и с паролем учетной записируководитьактерское метод мастерстварептилия, пароль учетной записи отсутствует, в основном основан на браузере --proxy-server Реализация параметров и метод с учетной записью и паролем основаны на Selenium-Chrome-HTTP-Private-Proxy Реализация плагина, в то же время доступен способ получения IP прокси бесплатно (непрерывный прокси). Заинтересованные друзья могут его попробовать.

Профиль

👋 привет, я Lorin Лорейн, один Java Разработчик бэкэнд-технологий!девиз:Technology has the power to make the world a better place.

🚀 Моя страсть к технологиям — это моя мотивация продолжать учиться и делиться ими. Мой блог — это место, посвященное экосистеме Java, серверной разработке и новейшим технологическим тенденциям.

🧠 Будучи энтузиастом серверных технологий Java, я не только с энтузиазмом изучаю новые возможности языка и глубину технологий, но также с энтузиазмом делюсь своими идеями и передовым опытом. Я верю, что обмен знаниями и сотрудничество с сообществом могут помочь нам расти вместе.

💡 В моем блоге вы найдете подробные статьи об основных концепциях Java, базовой технологии JVM, часто используемых платформах, таких как Spring и Mybatis, управлении базами данных, таких как MySQL, промежуточном программном обеспечении для обработки сообщений, таком как RabbitMQ и Rocketmq, оптимизации производительности и т. д. Я также поделюсь некоторыми советами по программированию и методами решения проблем, которые помогут вам лучше освоить программирование на Java.

🌐 Я поощряю взаимодействие и создание сообщества, поэтому, пожалуйста, оставляйте свои вопросы, предложения или запросы по темам и дайте мне знать, что вас интересует. Кроме того, я буду делиться последними новостями Интернета и технологий, чтобы вы всегда были в курсе последних событий в мире технологий. Я с нетерпением жду возможности вместе с вами двигаться вперед по пути технологий и исследовать безграничные возможности мира технологий.

📖 Следите за обновлениями моего блога и давайте вместе стремиться к техническому совершенству.

Я участвую в четвертом выпуске специального тренировочного лагеря Tencent Technology Creation 2023 года с эссе, получившими награды. Приходите и разделите приз со мной!

boy illustration
Устраните проблему совместимости между версией Spring Boot и Gradle Java: возникла проблема при настройке корневого проекта «demo1» > Не удалось.
boy illustration
Научите вас шаг за шагом, как настроить Nginx.
boy illustration
Это руководство — все, что вам нужно для руководства по автономному развертыванию сервера для проектов Python уровня няни (рекомендуемый сборник).
boy illustration
Не удалось запустить docker.service — Подробное объяснение идеального решения ️
boy illustration
Настройка файлового сервера Samba в системе Linux Centos. Анализ NetBIOS (супер подробно)
boy illustration
Как настроить метод ssh в Git, как получить и отправить код через метод ssh
boy illustration
RasaGpt — платформа чат-ботов на основе Rasa и LLM.
boy illustration
Nomic Embed: воспроизводимая модель внедрения SOTA с открытым исходным кодом.
boy illustration
Улучшение YOLOv8: EMA основана на эффективном многомасштабном внимании, основанном на межпространственном обучении, и эффект лучше, чем у ECA, CBAM и CA. Малые цели имеют очевидные преимущества | ICASSP2023
boy illustration
Урок 1 серии Libtorch: Тензорная библиотека Silky C++
boy illustration
Руководство по локальному развертыванию Stable Diffusion: подробные шаги и анализ распространенных проблем
boy illustration
Полностью автоматический инструмент для работы с видео в один клик: VideoLingo
boy illustration
Улучшения оптимизации RT-DETR: облегченные улучшения магистрали | Support Paddle облегченный rtdetr-r18, rtdetr-r34, rtdetr-r50, rtdet
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | Деформируемое внимание с большим ядром (D-LKA Attention), большое ядро ​​​​свертки улучшает механизм внимания восприимчивых полей с различными функциями
boy illustration
Создано Datawhale: выпущено «Руководство по тонкой настройке развертывания большой модели GLM-4»!
boy illustration
7B превышает десятки миллиардов, aiXcoder-7B с открытым исходным кодом Пекинского университета — это самая мощная модель большого кода, лучший выбор для корпоративного развертывания.
boy illustration
Используйте модель Huggingface, чтобы заменить интерфейс внедрения OpenAI в китайской среде.
boy illustration
Оригинальные улучшения YOLOv8: несколько новых улучшений | Сохранение исходной информации — алгоритм отделяемой по глубине свертки (MDSConv) |
boy illustration
Второй пилот облачной разработки | Быстро поиграйте со средствами разработки на базе искусственного интеллекта
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция с нулевым кодированием и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
Решенная Ошибка | Загрузка PyTorch медленная: TimeoutError: [Errno 110] При загрузке факела истекло время ожидания — Cat Head Tiger
boy illustration
Brother OCR, библиотека с открытым исходным кодом для Python, которая распознает коды проверки.
boy illustration
Новейшее подробное руководство по загрузке и использованию последней демонстрационной версии набора данных COCO.
boy illustration
Выпущен отчет о крупной модели финансовой отрасли за 2023 год | Полный текст включен в загрузку |
boy illustration
Обычные компьютеры также могут работать с большими моделями, и вы можете получить личного помощника с искусственным интеллектом за три шага | Руководство для начинающих по локальному развертыванию LLaMA-3
boy illustration
Одной статьи достаточно для анализа фактора транскрипции SCENIC на Python (4)
boy illustration
Бросая вызов ограничениям производительности небольших видеокарт, он научит вас запускать большие модели глубокого обучения с ограниченными ресурсами, а также предоставит полное руководство по оценке и эффективному использованию памяти графического процессора!
boy illustration
Команда Fudan NLP опубликовала 80-страничный обзор крупномасштабных модельных агентов, в котором в одной статье представлен обзор текущего состояния и будущего агентов ИИ.
boy illustration
[Эксклюзив] Вы должны знать о новой функции JetBrains 2024.1 «Полнострочное завершение кода», чтобы решить вашу путаницу!
boy illustration
Краткое изложение базовых знаний о регистрации изображений 1.0