2010-06-16 26 views
8

He escrito un programa que se basa en un proxy para funcionar. Ahora necesito un script que verifique si el navegador está configurado para usar el proxy correcto, y si no, cámbielo para usarlo. Necesito esto implementado para tantos buscadores como sea posible, pero solo se requiere para Internet Explorer, Google Chrome, Mozilla Firefox, Safari y Opera. Ni siquiera estoy seguro de cómo hacerlo, pero es para un proyecto de trabajo que se realizará dentro de unos días. Si alguien puede ayudar o prestar consejos, ¡lo agradecería enormemente!¿Cambiar la configuración del proxy del navegador desde Python?

estoy programando en:
MS Windows XP
Python 2.6

+1

Discusión sobre la configuración del proxy de lectura * * aquí que usted puede estar interesado en: http://old.nabble.com/using-windows-wide-proxy-settings-td20822378.html No estoy seguro de que Sin embargo, cambiaría automáticamente la configuración proxy de los usuarios (a menos que sea un atajo de configuración) Además, está http://stackoverflow.com/questions/1201771/how-to-set-proxy-with -python – shambulator

+0

Sí, los había visto. Estoy buscando algún código de ejemplo o algo. Gracias sin embargo. –

+0

¿Podría la extensión pythonwin ser capaz de ayudar con esto? –

Respuesta

14
La

Windows almacena su sistema de amplia representación en el registro, mira en el la HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings. Puede usar el módulo _winreg de Python para cambiarlo (o simplemente winreg si usa Python 3). Aquí es un ejemplo de código

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') 

para desactivarlo simplemente puede que tenga que configurar clave ProxyEnable a 0:

set_key('ProxyEnable', 0) 

Después de la secuencia de comandos ejecuta los navegadores todavía tendrán la edad de proxy almacenado en memoria, por lo que debe reiniciarlos para que puedan volver a leer la nueva configuración de proxy del registro. Esto me pareció muy molesto, así que convertí this snippet a 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) 

Esto actualiza la configuración de Windows por lo que todo lo que tiene que hacer es presionar F5 en su navegador con el fin de que agarrar la nueva configuración de proxy.

He escrito un pequeño script para cambiar mi representante encendido o apagado, la fuente en el Bitbucket: https://bitbucket.org/canassa/switch-proxy

Esto debería funcionar con cualquier navegador que utiliza el proxy de todo el sistema de Windows (por ejemplo: Cromo, ES DECIR). Algunos navegadores como Firefox usan una configuración interna de proxy. Si desea cambiar esto, tendrá que averiguar dónde almacenan su configuración y escribir el código para cambiarla.

Cuestiones relacionadas