日渐离不谷歌,于是找了一些提供科学冲浪的网站。可能站长为了避免滥用,每天都在更换账号密码,而且密码是以二维码方式发布。每次手动去打开网站、扫码、改密码的过程挺麻烦的。所以,了解了下二维码的原理,尝试现学一下Python用程序来自动获取、更新。

思路

  1. 解析、下载图片到本地;
  2. 通过 Python 的 zbar 库 识别二维码 转为 文本;
  3. base64 解码,并截取账号密码;
  4. 将新的账号密码插入到 代理工具 配置文件的指定位置;
  5. Win 计划任务每天自动调用( 或用 Linux crontab )

代码

ss.py

import zbar
from PIL import Image
import urllib
import cStringIO
import base64
import sys,os


URL = ('http://freess.org/images/servers/jp03.png')
# create a reader
scanner = zbar.ImageScanner()
# configure the reader
scanner.parse_config('enable')
# obtain image data
imgfile = cStringIO.StringIO(urllib.urlopen(URL).read())
pil = Image.open(imgfile).convert('L')

width, height = pil.size
raw = pil.tostring()
# wrap image data
image = zbar.Image(width, height, 'Y800', raw)
# scan the image for barcodes
scanner.scan(image)
# extract results
for symbol in image:
    # do something useful with results
    # print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data
    pwd = base64.b64decode(symbol.data[5:])[12:20]
    # with open('p1.txt', 'w') as f:
    #     f.write(pwd)

f=open('D:\\green\\ShadowsocksR\\gui-config.json','r+')
flist=f.readlines()
flist[25]='          \"password\" : \"'+pwd+'\",\n'
f=open('D:\\green\\ShadowsocksR\\gui-config.json','w+')
f.writelines(flist)


# clean up
del(image)

为方便临时的手动调用可以mycmd下新建ss.bat

# 更新密码
ssr/ss.py
# 启动 SS
ssr/ss.exe

后续

  • 机场订阅方式的出现方便不少
  • 还是自建的服务香啊!