(1)安装kali linux虚拟机,请使用桥接模式,如果使用nat模式,proxifier需要新建规则不代理VMware Workstation的流量。安装proxychains-ng,安装后的命令是proxychains4。

apt-get purge proxychains #卸载原proxychains
git clone https://github.com/rofl0r/proxychains-ng.git
cd proxychains-ng
./configure --prefix=/usr --sysconfdir=/etc
make
make install
make install-config

安装后的配置文件在/etc/proxychains.conf,如果你需要使用namp,请注释掉proxy_dns,并且使用-sT扫描,可在这里看到相关问题。

https://security.stackexchange.com/questions/122561/how-to-use-nmap-through-proxychains

代理列表的格式如下,注释原strict_chain并配置为round_robin_chain模式:
在这里插入图片描述
(2)在kali中安装proxybroker并搜集和处理代理IP。

安装:python3 -m pip install proxybroker
更新:python3 -m pip install -U git+https://github.com/constverum/ProxyBroker.git

请运行proxybroker查看帮助信息。这里获取100个国内的代理IP(默认proxybroker进行了check),先将输出保存到proxylist.txt中。

proxybroker find --types SOCKS4 SOCKS5 --lvl High --countries CN --format default --limit 100 >> proxylist.txt

如果你不想再验证代理有效性可以执行如下命令来处理输出结果为proxychains支持的格式。

sed 's/SOCKS4, SOCKS5/SOCKS5/g' proxylist.txt | sed 's/SOCKS/socks/g' | sed 's/^.*\[//g' | sed 's/>$//g' | sed 's/:/ /g' | sed 's/\]//g'

实际测试的时候获取的代理IP不一定有效,这里贴一个简单的python脚本帮助再次验证。

#!/usr/bin/python
#coding=utf-8
import Queue
import threading
import requests
import sys

class proxyCheck(threading.Thread):
  def __init__(self,queue):
    threading.Thread.__init__(self)
    self._queue = queue             #接收一个队列
  
  def run(self):
    while not self._queue.empty():
      proxy = self._queue.get()   #从队列取一个代理
      self.check(proxy)
      if self._queue.empty():
        break
  
  def check(self,proxy):
    try:
    #print("sock5://{}".format(proxy))
      html = requests.get('https://www.example.com',timeout=3,proxies={"https":proxy})
      sys.stdout.write(str(proxy.split(":")[0]).lower()+" "+str(proxy.split(":")[1].strip("/"))+" "+str(proxy.split(":")[2])+"\n")
      return 0
    except Exception as e:
      #print e
      #sys.stdout.write("connection error by %s\n" % proxy)
      pass

def main():
  proxy_queue = Queue.Queue()
  with open("socks.txt",'r') as f:
    for proxy in f.readlines():
      proxy = proxy.strip()
      proxy_queue.put(proxy)   #读取proxy文件并加入队列
      
  #print proxy_queue.qsize()
  
  threads = []  #线程池
  threads_count = 10   #十个线程
  
  for i in range(threads_count):
    threads.append(proxyCheck(proxy_queue))
  
  for t in threads:
    t.start()
  for t in threads:
    t.join()

if __name__ == '__main__':
  main()

先处理proxybroker搜集到的proxylist.txt,然后再用python脚本验证,脚本输出的格式支持proxychains的配置文件。将以下命令处理的结果保存为socks.txt,直接运行脚本验证即可。

sed 's/SOCKS4, SOCKS5/SOCKS5/g' proxylist.txt | sed 's/^.*\[//g' | sed 's/>\|\]//g' | sed 's/ /:\/\//g'

(3)通过以上步骤已经得到了一个动态切换代理的网络,为了windows能使用这个网络,需要用proxychains代理kali上的microsocks,然后windows用proxifier连接到kali的microsocks的socks5。
microsocks是一个轻量级别的socks5代理服务器,在github上筛选了一番还是这个方便易用。

git clone https://github.com/rofl0r/microsocks.git
cd microsocks
make
proxychains4 ./microsocks -p 8888 -u test -P test #用户密码均为test

windows安装proxifier,官网下载的话需要翻墙,注意下载安装版本的,实测Portable免安装版本没有正常全局代理,命令行执行脚本没有代理成功。安装后搜索注册码注册即可,如下配置。
在这里插入图片描述
check一下连接正常

我在公网服务器上用python -m SimpleHTTPServer 8352对比观察代理池的情况下扫描服务器,ip发生了变化
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐