Torを使用したプロキシ。 マルチスレッド解析の基礎

みなさんこんにちは! 先日、興味深いタスクが到着しました:「無料のプロキシを見つける」。 それを受け取ったので、私は無料プロキシのすべてのサイトを巡回することに決めました-死んだ...まあ、または高いpingで。



検索に数時間失敗した後、リソースを使用することになりました!



そのため、最終的に何が起こるべきか:



1. VM Ubuntu / Debian 2 CPU、2GB RAM、8GB HDD(それはまったく要求されません)

2.リクエストをプロキシするためのPRIVOXY(nginx、ニスを使用できます-Privoxyを使用しました)

3. TORサーバー



私自身の経験から、70のプロキシがどこかで約30メガビットのチャネルを消費すると言います。 とても幸せでした。 おそらく、あなたのリソースはトラフィックをより要求するでしょう。



まず、必要なライブラリを作成します。



apt-get install tor privoxy expect
      
      





将来的には、privoxyおよびtorスクリプトのクローンを作成し、個別のサービスを開始するため、初期設定は不要です。



インストールは遅れており、サービスの自動展開のためのスクリプトの作成に進みます



初期入力パラメーターを定義します。



 PID_END=99 #   PRIVOXY_PORT=8100 #   privoxy,       8100  8199 TOR_PORT=9100 #   Tor,       9101  9199 TOR_CONTROL=20000 #    Tor.    ,          . BASE_IP=10.0.0.1 #,   IP      .          . BASE_DIR=./data_tor #  PID TOR BASE_DIR_PRIVOXY=/etc #   Privoxy,         52  53   INSTANCE=$1 #     .        99 
      
      





最初に何が起こるか、自分で決める。 最初に99個のTorインスタンスを作成し、その後99個のPrivoxyインスタンスを作成します。



TORが特定のポートで動作するには、このようなコマンドを実行する必要があります



 tor --RunAsDaemon 1 --CookieAuthentication 0 --HashedControlPassword "" --ControlPort $c_port --PidFile tor$i.pid --SocksPort $s_port --DataDirectory ${BASE_DIR}/tor$i
      
      





しかし、privoxyはひどいことをしなければなりません:設定と実行可能ファイルを複製します。



すぐに実行スクリプトを提供します。 間違えないように、すべてを詳細に描いた。



次のようにTorとPrivoxyを実行できます:



 ./tor_privoxy_start.sh 50
      
      





次のようなストリームを更新します。



 ./tor_privoxy_start.sh 50 update
      
      





tor_privoxy_start.sh
 #!/bin/bash #set -e #     PID_END=99 #   PRIVOXY_PORT=8100 #   privoxy,       8100  8199 TOR_PORT=9100 #   Tor,       9101  9199 TOR_CONTROL=20000 #    Tor.    ,          . BASE_IP=10.1.9.98 #,   IP      .          . BASE_DIR=./data_tor #  PID TOR BASE_DIR_PRIVOXY=/etc #   Privoxy,         64  65   INSTANCE=$1 #     .        99  ACTION=$2 UPDATE="update" if [ ! -d $BASE_DIR ]; then mkdir -p $BASE_DIR fi echo "   :" echo "1  TOR  Privoxy" echo "2   TOR" echo "3   TOR  Privoxy" read doing case $doing in 1) #  for i in $(seq 1 ${INSTANCE}); do p_port=$((PRIVOXY_PORT+i)) s_port=$((TOR_PORT+i)) c_port=$((TOR_CONTROL+i)) if [ $i -gt $PID_END ]; then echo " Treads  ,  \n" break fi if [ ! -d "$BASE_DIR/tor${i}" ]; then echo "  ${BASE_DIR}/tor${i}" mkdir -p "${BASE_DIR}/tor${i}" fi if [ ! -d "${BASE_DIR_PRIVOXY}/privoxy${i}" ]; then echo "  ${BASE_DIR_PRIVOXY}/privoxy${i}" mkdir -p "${BASE_DIR_PRIVOXY}/privoxy${i}" fi cp -r ${BASE_DIR_PRIVOXY}/privoxy/* ${BASE_DIR_PRIVOXY}/privoxy$i #    #  echo "" > ${BASE_DIR_PRIVOXY}/privoxy$i/config; echo "forward-socks4a / 127.0.0.1:${s_port} ." >> ${BASE_DIR_PRIVOXY}/privoxy$i/config echo "confdir ${BASE_DIR_PRIVOXY}/privoxy${i}" >> ${BASE_DIR_PRIVOXY}/privoxy$i/config echo "logdir /var/log/privoxy/" >> ${BASE_DIR_PRIVOXY}/privoxy$i/config echo "logfile privoxy.log" >> ${BASE_DIR_PRIVOXY}/privoxy$i/config echo "#actionsfile standard" >> ${BASE_DIR_PRIVOXY}/privoxy$i/config echo "actionsfile default.action" >> ${BASE_DIR_PRIVOXY}/privoxy$i/config echo "actionsfile user.action" >> ${BASE_DIR_PRIVOXY}/privoxy$i/config echo "filterfile default.filter" >> ${BASE_DIR_PRIVOXY}/privoxy$i/config echo "debug 4096" >> ${BASE_DIR_PRIVOXY}/privoxy$i/config echo "debug 8192" >> ${BASE_DIR_PRIVOXY}/privoxy$i/config echo "listen-address ${BASE_IP}:${p_port}" >> ${BASE_DIR_PRIVOXY}/privoxy$i/config echo "user-manual /usr/share/doc/privoxy/user-manual" >> ${BASE_DIR_PRIVOXY}/privoxy$i/config echo "toggle 1" >> ${BASE_DIR_PRIVOXY}/privoxy$i/config echo "enable-remote-toggle 0" >> ${BASE_DIR_PRIVOXY}/privoxy$i/config echo "enable-edit-actions 0" >> ${BASE_DIR_PRIVOXY}/privoxy$i/config echo "enable-remote-http-toggle 0" >> ${BASE_DIR_PRIVOXY}/privoxy$i/config echo "buffer-limit 4096" >> ${BASE_DIR_PRIVOXY}/privoxy$i/config cp -r /etc/init.d/privoxy /etc/init.d/privoxy$i cp -r /usr/sbin/privoxy /usr/sbin/privoxy$i sed -i "s/NAME=privoxy/NAME=privoxy${i}/g" /etc/init.d/privoxy$i FROM="CONFIGFILE=\/etc\/privoxy\/config" TO="CONFIGFILE=\/etc\/privoxy${i}\/config" sed -i "s/$FROM/$TO/g" /etc/init.d/privoxy$i echo ": tor --RunAsDaemon 1 --CookieAuthentication 0 --HashedControlPassword \"\" --ControlPort $c_port --PidFile tor$i.pid --SocksPort $s_port --DataDirectory ${BASE_DIR}/tor$i" tor --RunAsDaemon 1 --CookieAuthentication 0 --HashedControlPassword "" --ControlPort $c_port --PidFile tor$i.pid --SocksPort $s_port --DataDirectory ${BASE_DIR}/tor$i echo "Update RC" update-rc.d privoxy$i defaults systemctl daemon-reload #  /etc/init.d/privoxy$i restart done #       netstat -4ln | grep $BASE_IP:80** | grep -Eo '10.{12}' > ./proxy_list.txt ;; 2) #     echo "  TOR\n" for i in $(seq 1 ${INSTANCE}); do c_port=$((TOR_CONTROL+i)) ./tor_renew.exp $c_port done ;; 3) for i in $(seq 1 ${PID_END}); do rm -r /etc/privoxy${i} rm /etc/init.d/privoxy${i} rm /usr/sbin/privoxy${i} done kill $(ps aux | grep -e 'tor' -e 'privoxy' | awk '{print $2}') ;; esac
      
      







また、制御ポートを介したTorストリーム更新スクリプト。



tor_renew.exp
 #!/usr/bin/expect -f set port [lindex $argv 0] spawn telnet 127.0.0.1 $port expect "Escape character is '^]'." send "AUTHENTICATE\r" expect "250 OK" send "signal NEWNYM\r" expect "250 OK" send "quit\r"
      
      







そして、監視を強化することを忘れないでください!



PS使用できます!



All Articles