#Python爬虫#--反爬虫突破之更改本机代理IP设置

user

雨橙

中国.四川.成都

世界之上、唯有远见、惟爱不变。


关于上一篇我们获取过来的代理IP最终我们怎么使用?
一个是可以直接循环切换IP来爬取目标站。另一个使用方式就是搭建本地代理IP池。切换IP来做一下自动化测试工作。
 
下面是参考示例代码:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# 本机代理配置使用方法:
# 执行一次开启,再执行就关闭,再执行又开启,循环往复


import struct
import _winreg
import sys

#proxy = sys.argv[1]
proxy = "121.31.101.155:8123"
root = _winreg.HKEY_CURRENT_USER
proxy_path = r"Software\Microsoft\Windows\CurrentVersion\Internet Settings"
kv_Enable = [
  (proxy_path, "ProxyEnable", 1, _winreg.REG_DWORD),
  (proxy_path, "ProxyServer", proxy, _winreg.REG_SZ),
]

kv_Disable = [
  (proxy_path, "ProxyEnable", 0, _winreg.REG_DWORD),
  (proxy_path, "ProxyServer", proxy, _winreg.REG_SZ),
]

hKey = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, proxy_path)
value, type = _winreg.QueryValueEx(hKey, "ProxyEnable")
kv = kv_Enable
result = "Enabled"
if value:
    result = "Disabled"
    kv = kv_Disable

for keypath, value_name, value, value_type in kv:
    hKey = _winreg.CreateKey (root, keypath)
    _winreg.SetValueEx (hKey, value_name, 0, value_type, value)

print result

当我们运行代码后发现。IE代理配置注册表项确实改动了,但是好像每次必须打开IE设置才能生效。
这里存在一个问题。当我们使用软件自动化测试时可能不一定使用IE来操作。所以这里是存在问题滴。
下面是百度出来的解决方案。
 
Windows上利用Python自动切换代理IP的终极方案!
文/solomonxie(简书作者)
原文链接:http://www.jianshu.com/p/49c444d9a435
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
 
文章中指出影响代理IP设置的注册表关键节点为:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections]下面的DefaultConnectionSettings项。
只需要构造DefaultConnectionSettings项为reg文件即可。最终通过python来导入reg文件来实现了代理IP切换。
posted at