快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

linux中如何设置http代理ip

这篇文章主要讲解了“linux中如何设置http代理ip”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux中如何设置http代理ip”吧!

成都创新互联专注于南木林企业网站建设,响应式网站设计,商城网站建设。南木林网站建设公司,为南木林等地区提供建站服务。全流程定制网站制作,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务

具体实现步骤如下:

1、安装pywin32、WMI支持。

具体下载地址Google一下,因为我的是32位python2.7系列,下载到的文件名分别为(pywin32-218.win32-py2.7.exe、WMI-1.4.7.win32.exe)

首先,我们查资料知道,IE浏览器的代理内容在注册表中『HKEYCURRENTUSER\Software\Microsoft\Windows\CurrentVersion\Internet Settings』这里存着,所以我们理论上只要修改这里相关的键值就可以切换IE代理。

2、修改注册表键值。

所以通过1得到,第一个函数就是修改注册表键值:

def changeIEProxy(keyName, keyValue):
 
  pathInReg = 'Software\Microsoft\Windows\CurrentVersion\Internet Settings'
 
  key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,pathInReg, 0, win32con.KEY_ALL_ACCESS)
 
  win32api.RegSetValueEx(key, keyName, 0, win32con.REG_SZ, keyValue)
 
  win32api.RegCloseKey(key)

因此段代码中用到了pywin32的的东西,所以在文件最开头需要做import win32api, win32con,引入相关的class

修改系统注册表的函数其实就这么几行…当然,因为我厂必须通过代理服务器上网,所以修改系统注册表的键值类型我只用到了REG_SZ这一种,实际其他情况还会有REG_DWORD啊等等类型。

3、需要一个配置文件,来保存各种场景的不同的配置信息。

然后咱需要一个配置文件,来保存各种场景『QA啊开发环境啊』的不同的配置信息,这时候我使用的配置文件为ini格式,用Python自带的ConfigParser就可以解析此种文件格式。

没有采用以往我最熟悉的XML或者json纯粹为了装x,xml和json总觉着是web上用的东西,ini看起来比较像一个.exe比较常用的配置文件格式。

也因为以前没用过ini格式的配置文件,这次权当又学会一种Python的玩法而已。

所以读取ini配置文件的代码为:

config = ConfigParser.ConfigParser()
 
config.read('config.ini')
 
if config.has_section(_section):
 
  _ProxyServer = config.get(_section, 'ProxyServer')
 
  _ProxyOverride = config.get(_section, 'ProxyOverride')

4、在文件最开头也import ConfigParser一下。

同样,因为用到了ConfigParser,需要在文件最开头也import ConfigParser一下。

细心的小伙伴会注意到这段代码中有一个_section的变量实际是没有定义的,而这个变量俺给它的含义是前边所写的『场景』,比如_section=='dev'表示开发环境,_section=='qa'表示QA环境,而咱们这次既然做的是一个类似exe的程序,所以_section需要在执行exe时候当作参数传进来。

这时候咱们就要用到Python的sys模块了,同样import sys,然后在程序中通过:

_section = sys.argv[1] if len(sys.argv) > 1 else 'dev'

这样的方式来获取『场景』这个参数,这一段代码就会变成:

_section = sys.argv[1] if len(sys.argv) > 1 else 'dev'
 
config = ConfigParser.ConfigParser()
 
config.read('config.ini')
 
if config.has_section(_section):
 
  _ProxyServer = config.get(_section, 'ProxyServer')
 
  _ProxyOverride = config.get(_section, 'ProxyOverride')

既然已经读取到配置文件中的ProxyServer和ProxyOverride,写入到注册表理论上就能完成咱们的修改IE代理配置的大业了:

_section = sys.argv[1] if len(sys.argv) > 1 else 'dev'
 
config = ConfigParser.ConfigParser()
 
config.read('config.ini')
 
if config.has_section(_section):
 
  _ProxyServer = config.get(_section, 'ProxyServer')
 
  _ProxyOverride = config.get(_section, 'ProxyOverride')
 
  changeIEProxy('ProxyServer', _ProxyServer)
 
  changeIEProxy('ProxyOverride', _ProxyOverride)

因为注册表内容虽然已经修改了,但实际上IE浏览器并没有生效,让IE浏览器生效需要关闭重新打开。

这时候就用到前边安装WMI,import wmi ctypes,然后:

def kill_ie():
 
  c = wmi.WMI()
 
  kernel32 = ctypes.windll.kernel32
 
  for process in c.Win32_Process():
 
    if process.Name=='iexplore.exe':
 
      kernel32.TerminateProcess(kernel32.OpenProcess(1, 0, process.ProcessId), 0)

当然,这段代码是有一点点问题的,只关闭了IE没有重新打开

综上所述:

完整的代码为:

#coding=utf-8
 
import win32api, win32con, sys, ConfigParser, os, wmi, ctypes
 
def kill_ie():
 
  c = wmi.WMI()
 
  kernel32 = ctypes.windll.kernel32
 
  for process in c.Win32_Process():
 
    if process.Name=='iexplore.exe':
 
      kernel32.TerminateProcess(kernel32.OpenProcess(1, 0, process.ProcessId), 0)
 
def changeIEProxy(keyName, keyValue):
 
  pathInReg = 'Software\Microsoft\Windows\CurrentVersion\Internet Settings'
 
  key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,pathInReg, 0, win32con.KEY_ALL_ACCESS)
 
  win32api.RegSetValueEx(key, keyName, 0, win32con.REG_SZ, keyValue)
 
  win32api.RegCloseKey(key)
 
def check_config():
 
  if not os.path.isfile('config.ini'):
 
    cfg = ConfigParser.ConfigParser()
 
    #开发环境
 
    cfg.add_section('dev')
 
    cfg.set('dev', 'ProxyServer', '192.168.0.6:3128')
 
    cfg.set('dev', 'ProxyOverride', 'localhost;127.0.0.1')
 
    #预上线
 
    cfg.add_section('prepare')
 
    cfg.set('prepare', 'ProxyServer', '192.168.0.6:3128')
 
    cfg.set('prepare', 'ProxyOverride', 'localhost;127.0.0.1;')
 
    #线上
 
    cfg.add_section('online')
 
    cfg.set('online', 'ProxyServer', '192.168.0.6:3128')
 
    cfg.set('online', 'ProxyOverride', 'localhost;127.0.0.1')
 
    #QA
 
    cfg.add_section('qa')
 
    cfg.set('qa', 'ProxyServer', '192.168.2.16:3128')
 
    cfg.set('qa', 'ProxyOverride', 'localhost;127.0.0.1')
 
    cfg.write(open('config.ini', 'a'))
 
    return False
 
  return True
 
if __name__ == "__main__":
 
  _section = sys.argv[1] if len(sys.argv) > 1 else 'dev'
 
  if check_config():
 
    kill_ie()
 
    config = ConfigParser.ConfigParser()
 
    config.read('config.ini')
 
    if config.has_section(_section):
 
      _ProxyServer = config.get(_section, 'ProxyServer')
 
      _ProxyOverride = config.get(_section, 'ProxyOverride')
 
      changeIEProxy('ProxyServer', _ProxyServer)
 
      changeIEProxy('ProxyOverride', _ProxyOverride)
 
    print 'done, open ie'
 
  else:
 
    print 'config.ini is created, modify config.ini and try again'

感谢各位的阅读,以上就是“linux中如何设置http代理ip”的内容了,经过本文的学习后,相信大家对linux中如何设置http代理ip这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


网页名称:linux中如何设置http代理ip
当前链接:http://6mz.cn/article/gggosh.html

其他资讯