社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  分享发现

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

jplou • 10 年前 • 15761 次点击  

这里不能上传附件,拷贝上来格式有点乱。 这是脚本的百度盘链接: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
 
15761 次点击  
文章 [ 12 ]  |  最新文章 10 年前
yer
Reply   •   1 楼
yer    10 年前

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

Rauz
Reply   •   2 楼
Rauz    10 年前

@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    10 年前

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

jplou
Reply   •   4 楼
jplou    10 年前

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

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

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

jplou
Reply   •   6 楼
jplou    10 年前

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

测试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站长    10 年前

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

jplou
Reply   •   8 楼
jplou    10 年前

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

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

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

BeginMan
Reply   •   10 楼
BeginMan    10 年前

实用啊

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

赞~

n37r06u3
Reply   •   12 楼
n37r06u3    10 年前

收里 可以用