Изменить настройки прокси-сервера браузера с Python?

Я написал программу, которая использует прокси-функции. Теперь мне нужен скрипт, который проверит, настроен ли браузер на использование правильного прокси, а если нет, измените его на использование. Мне нужно, чтобы это было реализовано для как можно большего количества браузеров, но требуется только для Internet Explorer, Google Chrome, Mozilla Firefox, Safari и Opera. Я даже не уверен, как это сделать, но это для проекта для работы, который должен быть через несколько дней. Если кто может помогите или дайте совет, я был бы очень признателен!

я программирую на:
MS Windows XP
В Python 2.6

1 ответов


Windows хранит свой системный прокси-сервер в реестре, посмотрите в HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings. Вы можете использовать модуль Python _winreg для его изменения (или просто winreg, если вы используете Python 3). Вот пример кода

import _winreg as winreg

INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
    r'Software\Microsoft\Windows\CurrentVersion\Internet Settings',
    0, winreg.KEY_ALL_ACCESS)

def set_key(name, value):
    _, reg_type = winreg.QueryValueEx(INTERNET_SETTINGS, name)
    winreg.SetValueEx(INTERNET_SETTINGS, name, 0, reg_type, value)

set_key('ProxyEnable', 1)
set_key('ProxyOverride', u'*.local;<local>')  # Bypass the proxy for localhost
set_key('ProxyServer', u'X.X.X.X:8080')

чтобы отключить его, вам просто нужно установить ProxyEnable ключ в 0:

set_key('ProxyEnable', 0)

после запуска сценария браузеры по-прежнему будут иметь старый прокси, хранящийся в памяти, поэтому вам нужно перезапустить их, чтобы они могли повторно прочитать новые настройки прокси из реестра. Я нашел это очень раздражающим, поэтому я преобразовал этот фрагмент в Python.

import ctypes

INTERNET_OPTION_REFRESH = 37
INTERNET_OPTION_SETTINGS_CHANGED = 39

internet_set_option = ctypes.windll.Wininet.InternetSetOptionW

internet_set_option(0, self.INTERNET_OPTION_REFRESH, 0, 0)
internet_set_option(0, self.INTERNET_OPTION_SETTINGS_CHANGED, 0, 0)

это обновляет настройки Windows, так что все, что вам нужно сделать, это нажать F5 в вашем браузере, чтобы захватить новые настройки прокси.

Я написал небольшой скрипт для включения или выключения моего прокси-сервера, источник в Bitbucket: https://bitbucket.org/canassa/switch-proxy

это должно работать с любым браузером, который использует системный прокси Windows (например: Chrome, IE). Некоторые браузеры, такие как Firefox, используют внутренние настройки прокси. Если вы хотите изменить их, вам придется выяснить, где они хранят свои настройки и написать код для его изменения.