用Python制作的SS密码一键更新

799 查看

Github,exe文件在这里
-----2016.05.12-----

  • 原理就是抓取网页上密码的位置写入到本地gui-config.json这个配置文件里,现在写得还比较“笨”,可能网页一改密码位置就会出问题,以后改“聪明点”
  • 更新密码要重启下ss的程序,所以我一般都是运行下sspw.exe后再开shdow-socks
  • 既然是自动更新密码,当然前提你已经至少保存过A、B、C服务器中的一个配置咯
  • 我用的是2.5, 3.0也测试过没问题
  • 有BUG请反馈^_^

    sspw.exe放在ss程序和配置文件同目录就行

    -----2016.04.26已更新-----
    首先感谢iShadowsocks提供的免费fq试用.

因为使用Shwdowsocks fq时,每6小时换一次,密码,每次都要上官网,复制密码替换密码比较麻烦,又因为最近在学python所以就尝试做了个自动替换密码的小程序。

各种不足之处已经基本完善!

以后改进方向:尝试模块化、使用正则。

使用方法:

  • Python3.5(不晓得其他版本适用不)
  • Windows (Linux、Mac可能可以使用)
  • 将sspw.py、config.json(若第一次运行程序,初始化配置)放在ss的程序根目录
  • 直接运行 sspw.py
#!/usr/bin/env python3
from urllib import request
import json,os
from collections import OrderedDict


def updatePw(pw1,pw2,pw3,j):
    length=len(j["configs"])
    for x in range(length):
        if ((j["configs"][x]["server"]).upper()=="US1.ISS.TF"):
            j["configs"][x]["password"]=pw1
        if ((j["configs"][x]["server"]).upper()=="HK2.ISS.TF"):
            j["configs"][x]["password"]=pw2
        if ((j["configs"][x]["server"]).upper()=="JP3.ISS.TF"):
            j["configs"][x]["password"]=pw3

# z=抓取网页信息
with request.urlopen('http://www.ishadowsocks.net/') as f:
    data = f.read()
# 从转成string格式
    data=data.decode()  
# 获取密码
    ind1=data.find("A密码:")
    pw1=data[ind1+4:ind1+12]
    ind2=data.find("B密码:")
    pw2=data[ind2+4:ind2+12]
    ind3=data.find("C密码:")
    pw3=data[ind3+4:ind3+12]
try:
    # 定位密码
    if os.path.exists('./gui-config.json'):
        with open('./gui-config.json', 'r') as r:
            rcontent=r.read()
            #转成json格式
            j=json.loads(rcontent,object_pairs_hook=OrderedDict)
            updatePw(pw1,pw2,pw3,j)
        with open('./gui-config.json', 'w') as r:
            r.write(json.dumps(j))
    else:
        with open('./gui-config.json', 'w') as r:
            with open('./config.json', 'r') as r2:
                content=r2.read()
                jnew=json.loads(content,object_pairs_hook=OrderedDict)
                updatePw(pw1,pw2,pw3,jnew)
            r.write(json.dumps(jnew))
except Exception as e:
    print (e)

附我的ss的配置文件

{
"configs" : [
  {
"server" : "US1.ISS.TF",
"server_port" : 443,
"password" : "82798240",
"method" : "aes-256-cfb",
"remarks" : ""}
,
  {
"server" : "HK2.ISS.TF",
"server_port" : 8989,
"password" : "11181966",
"method" : "aes-256-cfb",
"remarks" : ""}
,
  {
"server" : "jp3.iss.tf",
"server_port" : 443,
"password" : "91958918",
"method" : "aes-256-cfb",
"remarks" : ""}

],
"strategy" : null,
"index" : 0,
"global" : false,
"enabled" : true,
"shareOverLan" : false,
"isDefault" : false,
"localPort" : 1080,
"pacUrl" : null,
"useOnlinePac" : false,
"availabilityStatistics" : false}

Github