Shadowsocks测速脚本

简介

程序原理:通过读取文件sslist.txt解析其中 ss:// 地址并连接,然后计算从Google服务器上下一张4K分辨率的图片所需时间,得出每秒传输的数据量从而实现测速功能
改进了一下…
Windows是用不了的

代码

新版Shadowsocks公开节点接入检测

简介

诶,原来有接口可以直接查询IP地址类型,由于免费查询次数只有5000次,所以只能在本地缓存已查询的结果。

懒得把数据库操作用Celery异步出去…反正没啥压力…

需要自定义:百度APIStore的API_KEY,SS监听端口,轮询时限,

代码

Shadowsocks公开节点接入检测

简介

SS in public总会有些人搞搞震,用服务器连入SS发垃圾邮件或挂爬虫代理

本着学习Python顺便搞个玩意的心态写了个接入检测工具,可能有误杀情况,随叫你出生不好(IP有毒…

程序原理:轮询SS连入的IP并调用RTBAsia的真人度分值API判定IP地址段的用途,如果检测为数据中心则Ban该IP

需要自定义:百度APIStore的API_KEY,SS监听端口,轮询时限,真人度分值阀值(我假定<2为数据中心IP)

代码

效果

Levenshtein距离C++描述

莱文斯坦距离的介绍与原理

莱文斯坦距离的简介

萊文斯坦距離,又稱Levenshtein距離,是編輯距離(edit distance)的一種。指兩個字串之間,由一個轉成另一個所需的最少編輯操作次數。許可的編輯操作包括將一個字符替換成另一個字符,插入一個字符,刪除一個字符。

例如將kitten一字轉成sitting:

  • sitten (k→s)
  • sittin (e→i)
  • sitting (→g)

俄羅斯科學家弗拉基米爾·萊文斯坦在1965年提出這個概念。

莱文斯坦距离的原理

$\qquad\operatorname{lev}_{a,b}(i,j) = \begin{cases}
\max(i,j) & \text{ if} \min(i,j)=0, \\
\min \begin{cases}
\operatorname{lev}_{a,b}(i-1,j) + 1 \\
\operatorname{lev}_{a,b}(i,j-1) + 1 \\
\operatorname{lev}_{a,b}(i-1,j-1) + 1_{(a_i \neq b_j)}
\end{cases} & \text{ otherwise.}
\end{cases}$

代码

A Basic Ubuntu-Paste Crawler in Python

一个简易的爬虫,基于Tornado的异步HTTP请求实现。

参考自:http://www.tornadoweb.org/en/stable/guide/queues.html

iptables防SPAM、BT和PT规则

为了预防起见切底封停可能VPS存在的安全漏洞。

此脚本适合Debian/Centos系统。

源代码转自:https://www.dwhd.org/20150915_162703.html

[HDU 3336] Count the string – KMP

题意是求字符内出现有多少组前缀。
那么反过来求,考查前缀能被多少组以字符串的某位置结束的后缀所匹配。

[POJ 2406] Power Strings && [POJ 1961] Period – KMP

题意:在串中找最小的循环节,并求出其循环次数。

结论:给定一个长度为$n$的字符串,若$n \% (n – next[n]) == 0$,则$n – next[n]$为最小循环节,同时反过来也成立。

证明:

首先要理解已知长度$n$和$next[n]$的值是可以推断出字符串的结构,而且$n – next[n]$是其中一个非重叠部分长度。

比如当$n=8, next[n]=5$:

116-1

再比如$n=8, next[n]=6$:

116-2

当$next[n] < \frac{n}{2}$时,很显然最小循环节为$n$,即不循环。

当$next[n] >= \frac{n}{2}$时,由上图过程可知,原串的结构是来自$P[0 \cdots n-next[n]-1]$(即从$P_{0}$起长度为$n-next[n]$的串)的$k$次复制(可能完整,可能不完整),如果是完整的$k$次复制,则显然最小循环节为$n$,$k$为周期数。

POJ 2406

POJ 1961