Public Repository

Last pushed: 2 months ago
Short Description
Across the Great Firewall we can reach every corner in the world.
Full Description

Lantern

1. 介绍

lantern通过mac地址来识别用户,从而限制用户使用流量。利用docker容器开启蓝灯,每次为容器指定一个随机的mac地址,可以实现“无限”流量。

2. 使用
docker run -itd --name lantern -p 8888:8888 -p 9999:9999 --mac-address 48:95:C5:9D:20:5B

说明:--mac-address是指定lantern运行容器的mac地址,每次启动时为它指定不同的地址便可达到无限流量的目的。

3. 快速启动/关闭脚本

为了方便使用,以下是一个快速启动/ 关闭lantern的Python脚本(lantern.py),当lantern流量用完后,用该脚本重启lantern,流量便又归零了。

#!/usr/bin/python3

import uuid
import random
import sys
import subprocess


def rand_mac():
    local_mac = uuid.uuid1().hex[-12:]
    mac = [random.randint(0x00, 0xff), random.randint(0x00, 0xff)]
    s = [local_mac[0:2], local_mac[2:4], local_mac[4:6], local_mac[6:8]]
    for item in mac:
        s.append(str("%02x" % item))
    return (':'.join(s))


def check_running():
    id = subprocess.getoutput('docker ps -q -f name=lantern')
    return id


def check_container():
    id = subprocess.getoutput('docker ps -aq -f name=lantern')
    return id


def start():
    stop()
    id = check_container()
    print('start lantern container...')
    subprocess.getoutput(
        'docker run -itd --name lantern -p 8888:8888 -p 9999:9999  --mac-address %s derker/lantern' % rand_mac())


def stop():
    if check_running():
        print('stop lantern container...')
        subprocess.getoutput('docker stop lantern')
    if check_container():
        print('delete lantern container...')
        subprocess.getoutput('docker rm lantern')


if __name__ == '__main__':
    action = len(sys.argv) < 2 or sys.argv[1]
    if action == 'stop':
        stop()
    else:
        start()

注意:利用以上脚本开启lantern后,web页面访问地址是:127.0.0.1:8888;代理地址是127.0.0.1:9999。lantern启动后,请手动为你需要科学上网的软件设置代理地址。Chrome浏览器推荐使用代理插件: Proxy SwitchyOmega

3. 脚本使用方法

lantern.py 重启蓝灯
lantern.py stop 停止蓝灯

注意为 lantern.py 加上可执行权限。

Docker Pull Command
Owner
derker

Comments (0)