Py学习  »  分享发现

[精华] 写了个端口映射脚本,将本地的127.0.0.1:80 映射到 google的全球IP

jplou • 9 年前 • 14998 次点击  

这里不能上传附件,拷贝上来格式有点乱。 这是脚本的百度盘链接:http://pan.baidu.com/s/1dD7Y1S9 (修复了内存消耗很大的问题。找到问题所在,访问速度也提高了。问题的外部原因:在google的搜索框内每输入一个字符都会有一个新的链接请求。)

现状:从 http://ls.ganquancun.com/ggip/ 获取google的全球IP地址集,测试这些IP地址集中的可用IP。由于长城的存在,这些IP地址的绝大多是被封的。这些IP地址是动态地被封的。即使是测试可用的IP也只能维持几分钟或几十秒,之后就访问不了了。在本地保存一个可用的IP的方法已经不管用了。

脚本的实现思路: 测试这些IP地址集中的可用IP,缓存5~10个应该测试的可用IP。不要缓存太多,因为它们很快会失效。用socket实现本地端口和可用IP之间的80端口映射。每个IP地址仅用一次就从可用队列中拿掉,可用IP少于5个时就继续补充,使可用IP始终能保持相对较新。

使用方法: 1. 运行脚本 2. 访问: http://127.0.0.1 就可以打开google页面了。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/529
 
14998 次点击  
文章 [ 12 ]  |  最新文章 9 年前
yer
Reply   •   1 楼
yer    9 年前

楼主好牛,可以使用。 @Rauz 编码是utf-8啊,调下你编辑器的编码就能正常显示了。

Rauz
Reply   •   2 楼
Rauz    9 年前

@jplou

怎么ip_info信息几乎都是乱码啊?请问你使用的是什么编码?

ip_info = ["±£¼ÓÀûÑÇ", "93.123.23.1/59", "°£¼°", "197.199.253.1/59", "°£¼°", "197.199.254.1/59", "Ïã¸Û", "218.189.25.129/187", "Ïã¸Û", "218.253.0.76/92", "218.253.0.140/187", "±ùµº", "149.126.86.1/59", "Ó¡¶ÈÄáÎ÷ÑÇ", "111.92.162.4/6", "111.92.162.12/59", "ÒÁÀ­¿Ë", "62.201.216.196/251", "ÈÕ±¾", "218.176.242.4/251", "¿ÏÄáÑÇ", "41.84.159.12/30",

Rauz
Reply   •   3 楼
Rauz    9 年前

哇, 可以使用, 谢谢楼主.

jplou
Reply   •   4 楼
jplou    9 年前

@星辰飘影-weibo 原理上打开主页和搜索都是向google请求打开一个html链接。我想应该是脚本的稳定性还不好导致的。

星辰飘影-weibo
Reply   •   5 楼
星辰飘影-weibo    9 年前

能打开google首页 却不能正常搜索??

jplou
Reply   •   6 楼
jplou    9 年前

要不把这个异常打印出来看看是什么:

测试google地址是否可用的线程

class testIpThread(threading.Thread):
def init(self, country, ip):
threading.Thread.init(self)
self.ip = ip self.country = country

def run(self):  
    global aliveThreadNum
    mutex.acquire()
    aliveThreadNum += 1
    mutex.release()

    url = r"http://%s" %self.ip

    try:
        html = getHtml(url)
        print "[%s] %s" %(self.country, url)
        mutex.acquire()
        aliveIpList.append((self.country, self.ip))
        mutex.release()
    except:
        pass   **<==== 这个地方把异常信息打印出来看看。在脚本的101行**

    mutex.acquire()
    aliveThreadNum -= 1
    mutex.release()
Py站长
Reply   •   7 楼
Py站长    9 年前

@jplou 扫描近半个小时,都是Failed...

jplou
Reply   •   8 楼
jplou    9 年前

@Django中国社区 你用的是我最新更新的版本吗?刚才测了一次还是好用的,难道是按不同的区域封杀的?:)

Py站长
Reply   •   9 楼
Py站长    9 年前

现在貌似没有一个IP可用啊。。

BeginMan
Reply   •   10 楼
BeginMan    9 年前

实用啊

Py站长
Reply   •   11 楼
Py站长    9 年前

赞~

n37r06u3
Reply   •   12 楼
n37r06u3    9 年前

收里 可以用