今天用手机上推的时候才发现,某服务器上暴露的公开代理在被疯狂的请求,stunnel显示有200多个session,估计是被哪个代理扫描软件发现了。

于是想了想怎么防止非法的请求。

用正常的认证肯定是不行,因为要用在PAC文件里,无法输入用户名和密码。同时又要保证提供的是正常的HTTP代理/SOCKS代理。

于是只好打端口号的注意。

PAC文件里,代理的端口号按照一定的规则自动变化,我选用的是某个特殊值,加上当前时间(精确到小时)用某种算法得出一个端口号。

服务器端,用Python,subprocess一个stunnel进程,监听相应规则的端口号。为了保证客户端与服务器端时间不同步导致的可能短时间内的网络不可用,最好在服务器端容错,至少同时提供两个端口,一个是当前的,一个是前一个规则下的。

按我目前的设计,大概端口号每隔一个小时会被重置一次,而一个持续连接最长可以存活两个小时,日常使用应该是没有什么问题了。