Stunnel 使用筆記&提供一個在線加密代理和一個cygwin/Linux 免費公益ssh -D腳本

2011年7月3日 | 分类: 翻墙相关 | 标签: , , ,

話說在網上閒逛,讀了數篇文章,關於Stunnel客戶端用作翻~強,於是在XP安裝了stunnel實現一下,
Linux我早已安裝,但沒使用,原因是沒有服務器,後來找到方式尋找免費服務器,現在已能在xp或Linux使用,以下為綜合心得,會以xp作為使用例子, Stunnel官網: http://www.stunnel.org

使用Stunnel,需要一個未牆的服務器,且支援Stuunel,服務器實現已知有如下方式

A) 購買VPS服務,自己搭建
B) 購買支援Stunnel的服務
C) 使用免費的服務

我的重點就是找尋免費的,呵呵, 首先在XP安裝Stunnel, 最新版本為4.38, 完成安裝,打開
C:\Program Files\stunnel\stunnel.conf ,最好使用Notepad++之類比較好的文本編輯器,
Windows 自帶的記事本實在太差, 找到 ;client = no 改為 client = yes , 行首的分號 “;”是Stunnel 的註解,如有就去掉, 再找到 ;[https]  改為
[https]
accept = 127.0.0.1:1984
connect = xxx.xxx.xxx.xxx:443

xxx.xxx.xxx.xxx 是服務器IP, 端口是443的, OK, 如何找到可用的IP呢? 如果不想動手,去李大師的
動~~態~~網, http:-//www_dongtaiwang_com, 需翻強上, 在頁面右下角有個叫 “当前IP “,
一 般都是台灣的,把IP填入stunnel.conf , 通常就可使用, 火狐5 + proxy selecter 插件, 已手動填入代理 http proxy 127.0.0.1 端口 1984 , SSL proxy 填入相同的, 也可使用PAC, 點擊最底的
Automatic Proxy Configuration URL, 填入http://autoproxy2pac.appspot.com/pac/puff
這就成了, 這方式是免折騰,但IP失效很快,且很多網站被李大師屏敝,只能作娛樂用途,呵呵, 作為
cmded的會員,怎會如此窩囊?

於是尋找免費代理,找出開放了443端口又能支援Stunnel代理,去那裡找? http://www.textproxylists.com/http://nntime.com/ 每天有大量代理發佈, 最先我是手動尋找, 但實在如大海撈針,浪費時間,搞了一會,幾乎要放棄了,轉念一想,何不使用腳本幫忙?
XP 裡我有安裝Cygwin,那是一個類似Linux的工作環境,Linux能執行的腳本通常Cygwin一樣能用,反之亦然, 於是針對nntime.com編寫了一個bash腳本, 代碼會調用另一perl腳本用來排除中國的代理,腳本會檢測443端口是否開放,這是主腳本

程序代码:
#! /bin/bash
tempfile="$HOME/Stunnel_Proxy.$$"
proxyfile="$HOME/StunnelProxy-$(date '+%Y%m%d').txt"
trap "rm -f $tempfile $proxyfile _r.txt _s.txt" 2

for (( i=1 ; i<=8 ; i++ ))
    do
        url="http://nntime.com/proxy-list-0${i}.htm"
        curl -s "$url" | \
        grep -Eo '[1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
    done > $tempfile

while read line
    do
        nc -v -w 5 -z $line 443 > _r.txt 2>&1
        if  grep '^.*443[ \t](https)[ \t]open' _r.txt
            then
              echo "$line" >> $proxyfile
            else
              continue
        fi
    done < "$tempfile"
rm -f r.txt
for ip in $(<$proxyfile)
    do
       baned=$(geoip "$ip")
       if echo "$baned" | grep '[Cc]hina' > /dev/null 2>&1
           then
             continue
           else
             echo "$baned" >> _s.txt 2>&1
        fi
    done
mv -f _s.txt $proxyfile    

isEmpty=$(file -b  "$proxyfile")

if [[ $isEmpty =~ empty ]]
    then
      echo "NO useful proxy."
      rm -f "$proxyfile"
    else
      echo "$proxyfile is made."
fi
rm -f "$tempfile"
exit 0

腳本會調用curl,nc,grep,date命令, 接著是一個我已用了多年自己寫的perl腳本
名為geoip

程序代码:
#! /usr/bin/perl

use strict;
use warnings;
use LWP::Simple;
use File::Basename;

my $name = basename($0);
my $usage = "Usage:\t $name ip";
my $ip = $ARGV[0] || die "$usage\n";
my $url = "http://www.geody.com/geoip.php?ip=${ip}";
my $search = get($url) or die "Could not open $url: $!\n";
my @search = split /\n/, $search;
my @location = grep /^IP:/, @search;
my $location = join " ", @location;
$location =~ s/<[^>]+>//g;

print "$location\n";

把腳本放在SHELL搜尋執行命令的路徑就可以了, 完成後會生成一個StunnelProxy-日期.txt文件,裡面就是開放443端口的代理.

後來又針對http://www.textproxylists.com/寫了另一腳本, 這不需要調用PERL腳本了,我寫了一個SHELL函數代替,也是使用nc, grep, awk等一般LINUX工具

程序代码:
#! /bin/bash
banned_ip(){
    local ip url location
    ip=$1
    url="http://www.geody.com/geoip.php?ip=${ip}"
    location=$(curl -s "$url" | awk '/^IP/{
            gsub(/<[^>]+>/, "", $0);print
    }')
    echo "$location"
}

url="http://www.textproxylists.com/proxy.php?allproxy"
tempfile="$HOME/temp.$$"
proxylist="$HOME/proxylist-$(date '+%Y%m%d').txt"
trap "rm -f $proxylist $tempfile _p.txt _q.txt" 2

curl -s "$url" | awk -F ":" '/^[0-9\.]+/{print $1}' >> "$tempfile"
while read line ; do
    nc -v -w 5 -z "$line" 443 > _p.txt 2>&1
    if grep '^.*443[ \t](https)[ \t]open' _p.txt > /dev/null 2>&1
        then
          echo "$line" >> _q.txt
        else
          continue
    fi
done < $tempfile
for ip in $(cat _q.txt)
    do
        sleep 2
        useful=$(banned_ip "$ip")
        if echo "$useful" | grep '[Cc]hina' > /dev/null 2>&1
            then
              continue
            else
              echo "$useful" >> $proxylist
        fi
    done

rm -f "$tempfile" _q.txt _p.txt
IsEmpty=$(file -b $proxylist)

if [[ "$IsEmpty" =~ empty ]] ; then
    echo "No useful proxy is found."
    rm -f "$proxylist"
    exit 5
fi

echo "$proxylist is made."
exit 0

今天以這個腳本下載的代理  http://pastebin.com/v5ZNrYW0
剩 下來的就是體力活了,手動以stunnel 測試這些IP,通常每天會有1~3是能用的, 本來想在代碼中加入調用lynx 和 stunnel自動測試,但有一技術上問題未能解決,就是有些是要密碼登錄的,有些是還沒搭建好,只有一個測試頁面,有些是SSL-VPN的登錄頁面,有 些出白頁,不知道怎樣排除這些服務器? 手動也不很費時,有時候好運氣第一個就能使用了 微笑

stunnel 翻強方式相當不錯,多平台,網上代理多如星數,加密,是極難封死的,值得一試,最後送上3個可用的IP,一個是美國,一個是香港,一個是泰國,香港的如你是敏感人士就最好只用來看TVB,呵呵

connect = 165.193.102.220:443
connect = 59.148.233.57:443
connect = 123.242.172.4:443

這三個我在無牆網絡下測試都能用  奸笑 ,歡迎測試, 補充一點,很多免費代理都不支援HTTPS連線,這是美中不足,有時會有一兩個能支援的,比例比較低

原文https://cmded.net/forum/index.php?topic=2807.0

本博客对Stunnel翻墙的介绍 http://igfw.net/archives/2297http://igfw.net/archives/3526http://igfw.net/archives/3260

提供一個在線加密代理和一個cygwin/Linux 免費公益ssh -D腳本

https://klue.tk/ 在線代理一枚

ssh -D 腳本,網站半小時改密碼一次,連上的不受影響,腳本需調用plink , 需要自行安裝

程序代码:
#! /bin/bash
host="178.18.17.111"
user="999proxy_ssh"
lport=7070
rport=22
url="http://www.999proxy.net/#"
pw=$(curl -s "$url" | sed -n '/password:/{
          n
          n
          n
          s/<[^>][^>]*>//g
          p
}')

plink "$host" -N -ssh -2 -P $rport -l "$user" -pw "$pw" -D $lport -v

原文https://cmded.net/forum/index.php?topic=2808.0

本博客对999proxy的介绍:http://igfw.net/archives/3603

目前还没有任何评论.