十二毫升的爱丽丝 https://blog.sandtears.com/ zh-CN 梦游仙境的爱丽丝,在呓语些什么? Sun, 28 Apr 2019 16:04:00 +0000 Sun, 28 Apr 2019 16:04:00 +0000 一个在线过滤RSS订阅内容的PHP程序 https://blog.sandtears.com/2019/04/29/self-hosted-php-rss-filter.html https://blog.sandtears.com/2019/04/29/self-hosted-php-rss-filter.html Sun, 28 Apr 2019 16:04:00 +0000 sandtears 一般而言过滤RSS订阅内容都是RSS客户端阅读器的工作,但是有些比较特殊的客户端并不支持过滤——比如PT站常用的下载工具uTorrent等,而网站提供的RSS过滤参数可能无法满足我们的个性化需求,所以有时我们需要一些在线工具对RSS订阅源进行一次过滤,然后使用客户端订阅过滤后的结果。

事实上对于这种需求已经有很多现成的在线工具,比如siftrss,但是公开的服务又存在隐私问题,所以自建RSS过滤服务成了最好的选择。

本文介绍了一款在线过滤RSS订阅内容的PHP程序rss-filter-php,可以方便地部署在VPS或者虚拟主机上。

部署程序

毕竟是PHP,程序的部署相对简单,只需要下载程序对应的zip文件并上传到配置好的站点目录下即可,站点需启用PHP支持,并安装php_curl扩展。

为了提高安全性,所以一个必要的操作就是禁止访问配置文件所在的目录。对于Apache,Cpanel虚拟主机等等其他兼容多级.htaccess文件的站点程序,不需要进行任何配置,上传的文件中已经包含了所需的配置。

对于Nginx用户,则需要在站点对应的配置文件中添加如下内容:

location ^~ /config {
    deny all;
}

location ^~ /class {
    deny all;
}

配置完成之后访问指定url即可获取过滤后的订阅源,url格式为:

http://example.com/index.php?config=<配置文件名>

配置文件详解

配置文件需要放在config/目录下,以.xml为结尾。

配置文件中出现的匹配式是符合PCRE标准的正则表达式,利用PHP中的preg_match函数匹配。

配置文件的基本格式如下:

<config>
    <title>CnBeta过滤源</title>
    <ruleSet>
        <source>https://www.cnbeta.com/backend.php</source>
        <timeout>10</timeout>
        <userAgent>Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36</userAgent>
        <titleDuplicateRemove>false</titleDuplicateRemove>
        <linkDuplicateRemove>false</linkDuplicateRemove>
        <rules>
            <titleMatch>/Apple/si</titleMatch>
            <titleMatchNot>/iPad/si</titleMatchNot>
            <before>2018-12-31 23:59:59 +1200</before>
            <after>2020-12-31 23:59:59 +1200</after>
            <olderThan>30m</olderThan>
            <newerThan>1d</newerThan>
        </rules>
    </ruleSet>
</config>

虽然从各个配置名应该能看出一二,不过还是简单的介绍一下。

  • title
    • 最终输出的订阅源标题名
    • 仅能出现一次
  • ruleSet
    • 可以出现多次,匹配不同ruleSet的条目将会混合输出
  • source
    • 包含一个指向原始源的URL地址
    • 在一个ruleSet中可以出现多次
  • timeout
    • 读取原始源的超时时间
  • titleDuplicateRemove
    • 是否合并相同标题的条目
    • 默认设置为false
  • linkDuplicateRemove
    • 是否合并指向相同链接的条目
    • 默认设置为false
  • titleMatch
    • 匹配标题中出现指定内容的条目
    • 多个匹配之间是OR的关系,出现任何一个都会被匹配
  • titleMatchMust
    • 与titleMatch类似,但是与其他匹配之间是AND的关系,必须全都符合才能匹配
  • titleMatchNot
    • 丢弃标题中出现指定内容的条目
    • 只要符合任何一条titleMatchNot,就会立即丢弃条目
  • before
    • 匹配指定时间之前的内容
    • 指定时间需要能够被strtotime()函数解析
  • after
    • 匹配指定时间之后的内容
    • 指定时间需要能够被strtotime()函数解析
  • olderThan
    • 类似before,但是格式改为相对时间,如7d代表7天
      • s代表秒
      • m代表分
      • h代表小时
      • d代表天
  • newerThan
    • 类似after,其余同上。

防止被人社工或穷举入口目录

配置文件中本身没有对客户端进行鉴权的配置项,而且客户端功能上很可能也不支持验证。

一个可行的替代方案是重命名配置文件,添加一段随机生成的字符串来防止社工或穷举。

比如对于上文的配置文件cnbeta.xml可以改名为H2dKFVUciwJz8sm4IPYMl9R-cnbeta.xml,这样对应的url就变成了:

http://example.com/index.php?config=H2dKFVUciwJz8sm4IPYMl9R-cnbeta
]]>
0 https://blog.sandtears.com/2019/04/29/self-hosted-php-rss-filter.html#comments https://blog.sandtears.com/feed/2019/04/29/self-hosted-php-rss-filter.html
为MIUI9欧洲版开启全盘加密 https://blog.sandtears.com/2019/04/21/enable-fbe-on-xiaomi-eu.html https://blog.sandtears.com/2019/04/21/enable-fbe-on-xiaomi-eu.html Sun, 21 Apr 2019 10:52:00 +0000 sandtears 对于不喜欢国内版MIUI又懒得折腾LineageOS等第三方系统的人来说,MIUI的欧洲版(又称波兰版,即 xiaomi.eu 的固件)是一个不错的选择,不仅大幅减少了广告数量,而且自带Google套件并通过SafetyNet验证和Google Play验证,可以享受全功能的Google套件。

但是一个让人不爽的设计是欧洲版取消了全盘加密并且移除了小米支付,小米支付可以通过提取apk来重新安装,但是开启全盘加密比较麻烦,因此撰文一篇记录开启全盘加密的过程。

  • 事前准备
    • 一部解锁BL并刷入了TWRP的小米手机
    • 一台安装了ADB驱动的电脑
    • 用一根数据线将手机与电脑链接
  • 通过TWRP安装MIUI欧洲版,注意不要重启
  • 进入TWRP主界面选择挂载(MOUNT),然后为System分区打上钩
  • 在电脑上执行adb shell进入TWRP的shell
  • 编辑/system/vendor/etc/fstab.qcom文件,将加密选项由encryptable=ice改为fileencryption=ice
  • 重启手机进入系统即可

另外需要注意的一点是,由于MIUI欧洲版的OTA升级方式是下载全量包,因此每次升级后都需要重新进入TWRP执行修改文件的操作。

这也为正常的升级操作带来了一定的阻碍——不能随意升级,必须在有电脑的情况下才能修改文件,否则就会卡在开机画面

最后附上上文提到的系统和工具的下载地址:

MIUI解锁申请地址:http://www.miui.com/unlock/index.html

TWRP下载地址:https://twrp.me/

MIUI欧洲版:https://xiaomi.eu/community/

]]>
0 https://blog.sandtears.com/2019/04/21/enable-fbe-on-xiaomi-eu.html#comments https://blog.sandtears.com/feed/2019/04/21/enable-fbe-on-xiaomi-eu.html
macOS下使用Automator右键上传图片 https://blog.sandtears.com/2019/03/02/mac-os-automator-add-context-item-upload-picture.html https://blog.sandtears.com/2019/03/02/mac-os-automator-add-context-item-upload-picture.html Sat, 02 Mar 2019 15:48:00 +0000 sandtears 很多用Markdown写博客的朋友都会遇到上传图片的问题,一个比较著名的解决方案就是iPic,可以轻松的上传图片并生成Markdown样式的图片链接。

但是iPic支持的图床有限,使用其他图床的用户往往只能通过网页版上传或者在命令行调用API,操作相对复杂。

这时,就轮到我们的主角——Mac下内置的自动化工具——Automator登场了。

Automator是一款强大的自动化工具,这里我们只用其中的一小部分功能,将Shell脚本转化为右键菜单项,有兴趣的读者可以自行开发更多的用途。

编写上传脚本

本文采用的上传方式是通过curl命令调用图床API进行上传,因此我们先要分析API并写出相应的脚本。

著名图床程序Chevereto为例,查阅API文档可以写出如下命令:

curl -F source=@image.jpg http://example.com/api/1/upload/?key=12345&format=txt

该API的返回值就是图片上传后的地址。

利用Automator创建右键菜单项

首先在Launchpad中找到Automator.app,通常是被放在其他文件夹中:

打开后如果没有窗口不要着急,可以点击一下Dock上的Automator图标,就会弹出一个新建窗口,在新建窗口中类型选择服务Service。

之后根据下图按照以下步骤进行操作,下面步骤中尽量使用中文描述,对应的英文翻译可以查看我上传的图片:

  • 将第一行的接受文件类型修改为图片文件,App选择访达(Finder)
  • 从左边搜索运行Shell脚本并拖到右边工作区,然后把右上角的输出修改为作为附件
  • 将下文中给出的脚本粘贴到文本框中,其中的curl命令可以替换为其他图床的上传命令
  • 从左边搜索显示通知并拖到右边工作区,内容按照图片填写
  • 保存并命名为上传图片并生成Markdown链接
API_KEY="12345"  # 图床的API_KEY
RESULT=""  # 用于存储结果的变量
for f in "$@"
do
    TMP_LINK='![]('$(curl -F source=@$f "https://example.com/api/1/upload/?key=$API_KEY&format=txt")')'
    RESULT="$RESULT
$TMP_LINK"
done
echo $RESULT | pbcopy  # 将上传结果传入剪贴板

效果演示

到这里,整个过程就完成了,在一个或者多个图片上按下右键,就可以在服务项中找到我们创建的上传图片并生成Markdown链接,选中并静待完成,对应的Markdown格式链接就会进入我们的剪贴板中。

记得使用前检测剪贴板,不要被程序冲掉了重要的东西哦。

]]>
0 https://blog.sandtears.com/2019/03/02/mac-os-automator-add-context-item-upload-picture.html#comments https://blog.sandtears.com/feed/2019/03/02/mac-os-automator-add-context-item-upload-picture.html
安卓手机上利用Tasker转发短信及未接来电 https://blog.sandtears.com/2019/02/22/android-sms-forward-tasker.html https://blog.sandtears.com/2019/02/22/android-sms-forward-tasker.html Fri, 22 Feb 2019 08:00:00 +0000 sandtears 本文算是利用安卓手机转发短信到其他网络服务的后续。

主要思路是利用Tasker这款成熟的自动化App实现类似的功能,提高健壮性,降低门槛。

创建任务

任务的关键就是选择一个良好的接口:

在这里,以Telegram为例,采用sendMessage接口。

根据文档或者我写的文章,接口的url是

https://api.telegram.org/bot<API_TOKEN>/sendMessage

两个必须的参数是代表推送对象的chat_id和推送内容text

在Tasker中选择创建任务,起名为sms2tg,按照如下图片填入内容,并替换<API_TOKEN><CHAT_ID>

https://api.telegram.org/

/bot<API_TOKEN>/sendMessage

chat_id=<CHAT_ID>
text=短信来自 %SMSRN [%SMSRF]:  %SMSRB  [%SMSRD  %SMSRT]

之后保存即可。

同样,电话可以创建任务call2tg,只需要将text部分修改为未接来电来自 %CNUM [%CDATE %CTIME]

创建触发器

要想正确触发任务还需要添加相应的触发器。

如下图设置收到短信触发sms2tg,未接来电触发call2tg并启用,短信及未接来电的转发就可以正常工作了。

]]>
0 https://blog.sandtears.com/2019/02/22/android-sms-forward-tasker.html#comments https://blog.sandtears.com/feed/2019/02/22/android-sms-forward-tasker.html
在斐讯N1上使用frp和Zerotier进行内网穿透 https://blog.sandtears.com/2019/02/18/zerotier-and-p2p.html https://blog.sandtears.com/2019/02/18/zerotier-and-p2p.html Sun, 17 Feb 2019 16:00:00 +0000 sandtears 前段时间我在另一篇文章中提到了我购置了一款斐讯N1盒子并刷入了Armbian系统。点击这里查看相关文章

这台N1按照计划是放到移动免费送的宽带(没有公网IP,只有100.64开头的运营商级NAT)下面当成个小号国内VPS玩的,但是宽带接入到家里一栋老屋了,所以需要做一下内网穿透。

从充分利用网络带宽的角度来说,自然是UDP打洞实现的内网穿透具有更好的性能,但是出于稳定性考虑,我决定先部署一个frp的客户端将SSH端口转发到腾讯云学生机,保证UDP打洞出问题的时候可以修复。

接下来的部分会简单介绍一下折腾frpZerotier的经历,以及使用体验。

利用frp实现端口转发

frp很多人都了解,是一个用于内网穿透的高性能的反向代理应用,简单点说就是可以把NAT后面的某台机器的端口转发到公网IP上去,类似ngrok或者花生壳内网版,好处是可以自建。

frp的官方中文文档写的不错,而且也有很多网友分享了部署的教程,所以这里就不再赘述安装过程和配置文件的格式,只简单提供一个适用于Armbian的systemd启动脚本。

[Unit]
Description=frpc
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=nobody
ExecStart=/usr/local/bin/frpc -c /usr/local/etc/frpc.ini
Restart=always

[Install]
WantedBy=multi-user.target

把上述内容放到/etc/systemd/system/frpc.service文件中,然后执行systemctl enable frpc,然后frp就会在N1盒子开机连接网络后自动启动了。

一开始我选择用熟悉的supervisor来自动启动frpc,但是很快发现了问题,由于frpc开始时会进行联网,如果启动时没有配置好网络那么就会导致启动失败,而supervisor又没有延时启动的参数,因此选择了可以指定启动顺序的systemd,事实上这也是Debian系统推荐的方式。

上文配置文件中的After=network-online.target就是在网络连接成功后启动,根据我的测试,可以稳定启动frpc。

利用Zerotier通过UDP打洞实现内网穿透

UDP打洞是一种NAT穿透技术,与上面frp的区别在于,frp的转发模式本质是通过具有公网IP的服务器M来进行流量转发(frp也提供xtcp模式来进行NAT穿透,但是成功率太低,效果不佳),这样如果服务器M的带宽有限,就会成为传输时的瓶颈,无法有效利用全部带宽。

Zerotier就是利用UDP打洞来实现内网穿透的工具,而且相比其他工具成功率更高、部署更简单。

注册账号

要使用Zerotier要先去官方网站创建一个账号,直接选择Free套餐即可,可以提供100台以内设备的内网穿透,完全够用了。

之后去网络管理页面创建一个网络并记住NetworkID。

网络管理界面可以配置很多东西,但是这里只介绍需要用到的部分,就是NetworkID和下面的Members。

NetworkID是在连入新设备时需要用到的标识符,每个设备连接这个虚拟的局域网时都要输入这个ID。

Members则是连入网络的设备列表,按照默认的设定,当有一个新设备接入网络时,用户需要在这个页面进行授权

安装Zerotier客户端

安装部分可以直接参考其下载页面,提供包括Windows、常见Linux发行版、OpenWrt、macOS、Android、iOS甚至QNAP、群晖等多个系统的客户端。

Armbian可以直接使用提供的一键脚本来进行安装:

curl -s 'https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61' | gpg --import && \
if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi

在Armbian上,一键脚本的基本功能就是添加一个apt源,然后从源安装名为zerotier-one的程序。

之后只需要执行zerotier-cli join <NetworkID>,然后再去上文提到的网络管理页面授权连接并分配IP地址就可以将这个设备接入网络了。

这样再用另一个设备接入这个网络时,即使两个设备都没有公网IP,他们也能用虚拟局域网的IP互相访问了。

部署中间服务器Moon

这里要简单提一下UDP打洞的原理,UDP打洞的本质是让NAT后面的机器A和B先连接一个有公网IP的中间服务器,然后中间服务器经过一番操作之后让A和B直接互联,这样之后的数据传输就是A和B之间直接传输,不再通过中间服务器。

但是出于节省资源和增强健壮性的角度,A和B服务器直接打出来的「洞」并不是永久的,而是维持一段时间后释放,下次连接时重新打洞。这样就带来一个问题,Zerotier是一款国外的项目,他提供的中间服务器到大陆的网络状况并不好,有很高的延迟,并且很可能丢包,这就导致我们每次「打洞」都有很高的延迟。

以我的网络环境进行的测试中,第一次「打洞」有接近500ms的延迟,之后延迟降低到100ms以下,直到这个「洞」被释放。

为了解决这个问题,Zerotier提供了一个moons的概念,官方文档中提供了详细的解释和配置方法。

这篇博客文章提供了一份中文的教程,有兴趣的读者可以按此操作。

我的中间服务器部署在腾讯云,对三网都有良好的延迟和极低的丢包,因此在部署成功后,「打洞」的第一个数据包延迟降低到了不到200ms,同时由于丢包较低,打洞成功率也有所上升。

一些简单的网络测试

事实上Zerotier的打洞效果好的令我惊讶,我的网络环境A是上行20M下行100M的电信网络,B则是移动赠送的50M上下行对等移动网络。

晚高峰时段,在两边都开启bbr的情况下,互相下载文件可以跑到网络峰值的60%~70%。
电信拖移动能跑到3MB/s,反过来则是1.4MB/s左右。
延迟的话「打洞」完成之后稳定在90ms,丢包率在8%左右。

顺便吐槽一下,一开始看到90ms的延迟我还以为打洞出了问题,结果直接从移动ping了一下电信的公网IP(我的电信网络环境是有公网IP的,但是我并没有在路由器设置端口转发,因此测试效果仍然是打洞的效果),发现延迟也在90ms上下,通过traceroute命令追踪路由发现数据包先从隔壁的H省进入移动骨干网,然后进入电信骨干,再从另一个方向隔壁的S省回到本地电信,难怪会有这么高的延迟orz

同样,8%也是晚高峰电信和移动互联本身的延迟。换而言之,Zerotier的打洞非常成功,延迟和丢包率基本都和公网差距不大,但是由于本身移动和电信晚高峰时段的互联效果较差,因此效果并没有想象中完美。从延迟的角度,本地电信到香港阿里云服务器的延迟尚在50ms以下,到洛杉矶的CN2服务器也不过150ms,然而与本地移动互联延迟竟然高达90ms,国内ISP互联还是任重道远啊。

]]>
0 https://blog.sandtears.com/2019/02/18/zerotier-and-p2p.html#comments https://blog.sandtears.com/feed/2019/02/18/zerotier-and-p2p.html
斐讯N1刷入Armbian系统 https://blog.sandtears.com/2019/02/16/phicomm-n1.html https://blog.sandtears.com/2019/02/16/phicomm-n1.html Fri, 15 Feb 2019 16:00:00 +0000 sandtears 斐讯N1盒子最近因为可以刷入ARM架构的Linux系统而变得十分热门。

降级到允许线刷的版本

首先为了恢复线刷功能,如果盒子到手的版本号高于2.19,那么需要降级,降级的方法可以使用恩山论坛的一键降级脚本Fastboot手动降级方式

需要注意的是N1只有USB2.0接口,所以如果连接电脑刷机需要购买一根公对公的USB数据线。

安装Linux系统

安装Linux系统的流程可以参考恩山的这个帖子,当然由于时间问题教程中的部分软件版本可能过老,所以这里也一并给出Armbian作者的网盘地址yangxuan8282大佬的N1仓库

简单总结一下安装Linux系统的流程:

  1. 下载Armbian的镜像,扩展名为img
  2. 使用USB烧录软件将img文件烧录到U盘,macOS/Linux用户可以使用dd命令。
  3. 下载yangxuan8282大佬的dtb文件,放入U盘boot分区的dtb文件夹中,然后修改boot分区下的uEnv.ini文件,将dtb文件名替换为刚刚放入的dtb文件。
  4. N1进入安卓之后执行adb shell reboot update,黑屏关机后插入U盘。(来自前文提到的恩山帖子)
  5. 进入系统后root登录,密码是1234,进行一些初始化设置之后首先执行ddbr,然后选b,一路yes备份eMMC分区(重要),接下来执行/root/install.sh,重启拔掉U盘即可进入Linux系统。

需要注意的几个点:

  1. 上文的第三步中的dtb文件据称可以修复内核高负载和有线断网的Bug,经过测试发现大多数的Armbian版本适用,只要替换了dtb文件就能解决这两个问题,没必要选择特定的内核版本。
  2. 第四步据称必须先进入安卓系统再通过adb重启,未测试,仅复述参考的教程。
  3. 第五步虽然备份eMMC很慢,但是强烈建议备份,便于恢复。另外如果出现拔掉U盘后无法进入Armbian,卡在第一屏的情况,可以插入U盘利用ddbr命令(先选r,然后一路yes)恢复eMMC分区后再次写入。

Armbian的一些性能评价

  • USB部分

USB2.0还能要求什么呢,移动硬盘能跑到30MB/s就很满足了。

直接使用 dd if=/dev/zero bs=1MB count=<count> of=test.bin 命令进行测试:

count=512, time=20s, speed=26MB/s
count=1024, time=48s, speed=21MB/s

eMMC硬盘的读写速度也很一般啊。。

  • CPU部分

进行了三项测试,分别是sha256哈希(单核心),bzip2加密(单核心),pbzip2(前者的多核心版本),命令分别为:

  • dd if=/dev/zero bs=1MB count=500 | sha256sum
  • dd if=/dev/zero bs=1MB count=500 | bzip2 > /dev/null
  • dd if=/dev/zero bs=1MB count=500 | pbzip2 > /dev/null

通过htop命令观察,CPU基本满载,主频也到了最大的1.5GHz,测试结果如下:

作为参考,提供搬瓦工最低配年付19.9美元VPS一加手机1代上利用Linux Deploy部署的Debian容器测试结果

测试项目 斐讯N1盒子 搬瓦工年付19.9刀 一加手机的Linux Deploy
shasum 69.3MB/s 121MB/s 84.7MB/s
bzip2 15.7MB/s 72.3MB/s 27.7MB/s
pbzip2 72.9MB/s 62.7MB/s 128MB/s

这个性能比我想象中要弱上不少,难怪有朋友提到作为下载机高速下载的时候会四核吃满陷入假死状态。

这台N1最终被我用于内网穿透。点击这里查看相关文章

]]>
0 https://blog.sandtears.com/2019/02/16/phicomm-n1.html#comments https://blog.sandtears.com/feed/2019/02/16/phicomm-n1.html
Seedbox搭建及PT刷子经验 https://blog.sandtears.com/2018/09/07/pt-and-seedbox.html https://blog.sandtears.com/2018/09/07/pt-and-seedbox.html Fri, 07 Sep 2018 13:00:00 +0000 sandtears

下载工具 Transmission

安装

Debian9下部署Transmission非常简单,可以直接从软件源安装:

apt install transmission-daemon

配置

之后需要对Transmission的配置文件进行简单的修改,允许从外界访问,此处需要注意,修改文件时,需要首先停止运行Transmission,否则重启后修改的配置文件就会失效。比较重要的几个修改项目列举如下:

# 首先运行 service transmission-daemon stop 停止服务
# 默认配置文件的路径是: /etc/transmission-daemon/settings.json

dht-enabled  # 关闭即可
download-dir  # 下载文件存储地址
max-peers-global  # 全局最大链接数,默认200,做种较多可以适当增加
peer-limit-global  # 同上
peer-limit-per-torrent  # 每个种子最大连接数
peer-port  # 客户端使用的连接端口,如果需要设置端口转发可以手动设置
peer-port-random-on-start  # 每次开始运行时选择随机端口
pex-enable  # 关闭即可
preallocation  # 预先分配空间,磁盘空间不足时可以设为0关闭
rpc-port  # 管理页面端口
rpc-username  # 管理页面用户名
rpc-password  # 管理页面密码
rpc-whitelist-enabled  # 设为 false 关闭白名单


# 最后运行 service transmission-daemon start 重启服务

这样,Transmission就配置完成了,可以通过访问http://<vps_ip_or_domain>:<port>/来进行管理,也可以在利用Nginx反代功能将管理页面映射到某个子目录下,这部分本文就不进行提及,有兴趣的读者可以自行搜索相关内容。

自动刷种工具 Flexget

安装

虽然已经部署了Transmission,但是现在只能通过手动的方式添加种子,并不支持常用的RSS订阅,在这里,博主向大家介绍一个强大的工具Flexget来通过RSS订阅的方式为Transmission添加种子,同时提供一些筛选功能。

Flexget的安装与配置相对麻烦一些,官方网站提供了一套安装指南:

apt install python python-pip
pip install --upgrade setuptools
pip install flexget transmissionrpc

这样就全局地将Flexget安装到了seedbox上,如果需要安装到指定的虚拟环境中,可以参考官方的安装指南。

配置

Flexget的配置同样可以参考官方的配置指南,在这里只列出一份博主自用的配置文件供各位参考(全局安装时,Flexget默认的配置文件位置在~/.config/flexget目录下,默认文件名为config.yml,如果没有可以自行创建)。

如果使用如下配置需要创建用于保存种子的文件夹

mkdir /root/torrent
tasks:
  mt:
    rss: https://tp.m-team.cc/torrentrss.php?https=1&rows=10&linktype=dl&passkey=***********
    accept_all: no
    regexp:
      accept:
        - "需要包含的关键字"
    content_size:
      min: 256
      max: 30720
    download: /root/torrent
    transmission:
      host: 127.0.0.1
      port: 9091
      username: username
      password: password
    clean_transmission:
      host: 127.0.0.1
      port: 9091
      username: username
      password: password
      finished_for: 24 hours
      tracker: tp.m-team.cc
      delete_files: Yes

测试及添加自动执行

配置完成后简单的测试一下,执行flexget execute,不出意外的话应当看到大量的种子在检测是否符合要求后下载到本地并添加到Transmission,可以通过访问之前Transmission的管理页面来进行查看。

接下来需要为flexget添加排程 (Cron),让他定时执行:

# 运行 crontab -e 设置排程
# 在最后一行添加以下内容,每5分钟运行一次检查
*/5  *  *  *  *  /usr/local/bin/flexget --cron execute

博主混迹PT站的经验

关键数据

国内 PT 站需要刷的数据主要有五个:

  • 上传量
  • 分享率 = 上传量 / 下载量
  • 魔力值 = 复杂公式计算,总之做种的体积越大收益越高,一般在500G左右较为划算,可以挂各站的通用大包,比如国家地理和中国通史。
  • 做种时间 = 每个种子的做种时间之和,可以下大量种子挂机刷时间。
  • 发种数量,可以在不同PT站之间转资源。

上传和下载

其中前两者,算是比较重要的部分,也是seedbox租户主要关注的部分。

进入一个新站,首先观察该站种子的免费模式和下载人数,由于seedbox具有较高的带宽,因此收益最高的是下载免费且下载人数多的种子,其次则是收费但下载人数多的种子。

种子的免费模式通常有如下几种类型:

  • 全站新种免费
  • 官方及官方合作的压制组发布内容免费
  • 特定资源免费

之后获得RSS并添加到Flexget时,可以根据观察到的模式来选择对应的内容或进行响应的过滤。

其次,较大的下载内容会占据大量的磁盘空间,做种时间和带宽,积压其他种子的下载速度,因此如果不是配置和带宽非常充足的seedbox,建议选择中小体积的种子,快速完成下载并做种,否则很可能卡在大体积种子导致新种下载速度不足,无法获得最佳收益。

Ourbits

俗称我堡,知名的跳板站,内有大量其他优质 PT 站的官方邀请。
偶尔开放注册,需要注册 10 周才能进邀请区。
种子免费模式是 blu-ray 原盘限时免费,出种速度不快,如果纯挂免费种的话建议与其他站一起挂。

M-Team

俗称馒头,国内比较出名的大站,资源丰富,同时有大量的成人内容。
偶尔开放抽奖式注册,不愿意抢可以通过捐赠25美元获得入站资格和一个月的会员。
种子免费模式是官方发布+指定内容限时免费,直接挂免费部分即可,种子数量充足。

HDsky

俗称天空。
种子免费模式为官方发布+指定内容限时免费,各种原盘、大于20GB的文件都属于免费之列,免费种出种速度很快,直接挂免费内容即可。

CMCT

俗称春天。
官方种子限时免费,出种速度不快,纯挂免费种建议与其他站一起挂。

]]>
0 https://blog.sandtears.com/2018/09/07/pt-and-seedbox.html#comments https://blog.sandtears.com/feed/2018/09/07/pt-and-seedbox.html
OpenVZ7下安装Docker容器 https://blog.sandtears.com/2018/09/07/openvz-7-docker.html https://blog.sandtears.com/2018/09/07/openvz-7-docker.html Fri, 07 Sep 2018 12:00:00 +0000 sandtears

Docker是一种近年来流行的容器技术,可以快速的部署服务,免去配置运行环境的烦恼。但是可惜的是,Docker对Linux系统高版本的内核特性有一定的依赖,尽管官方在较新的OpenVZ6中提供了对Docker的支持,但是一方面这种支持仅限于较老版本的Docker(<=1.10),且存在一定的兼容性问题;另一方面许多VPS服务提供商出于稳定性考虑并不愿意升级系统版本或为用户配置Docker支持。

但是在OpenVZ7中,官方对Docker提供了完整支持(虽然目前仍然是实验性特性,建议不要用于生产环境中),只需要挂载vethoverlay这两个内核模块即可。之后在OpenVZ虚拟机中,可以直接按照Docker官方提供的安装脚本安装指南进行安装和部署。

另外作为Bonus,在开启了这两个模块支持后,OpenVZ虚拟机中也可以利用lxc来进行再次虚拟化。

常见问题:

  • 如果在使用脚本或按照只能安装Docker时提示Docker运行失败,可能是宿主机未进行响应设置,可以通过工单的方式和服务提供商沟通要求添加Docker支持。
]]>
0 https://blog.sandtears.com/2018/09/07/openvz-7-docker.html#comments https://blog.sandtears.com/feed/2018/09/07/openvz-7-docker.html
搭建MTProxy服务器 https://blog.sandtears.com/2018/08/27/telegram-mtproto-proxy.html https://blog.sandtears.com/2018/08/27/telegram-mtproto-proxy.html Mon, 27 Aug 2018 07:00:00 +0000 sandtears MTProxy是一个Telegram专用的代理,可以帮助被封锁地区的用户访问Telegram。
由于MTProxy简单易用便于分享,同时相对Socks5代理具有更高的可控性(仅能用于代理Telegram专用的MTProto,无法用于其他方面的代理)和安全性(MTProxy节点无法查看客户端的消息内容,只能获取客户端的IP地址;客户端与MTProxy节点之间通过加密的方式连接),所以迅速得到了广泛应用。

MTProxy节点的搭建十分简单,大多数内容可以参考官方文档中的内容,不过也有一些可能遇到的问题在上述文章内并未提及,记录如下:

  1. 不具备公网IP的机器(包括阿里云谷歌云等虽然独享IPv4地址但网络接口的IP显示为内网地址的机器)需要通过 --nat-info <local-addr>:<global-addr> 参数来指定NAT信息,否则将无法正常连接。
  2. 如果希望通过@MTProxyBot查询代理状态,需要先运行一次实例,然后在@MTProxyBot注册并获取tag,然后使用 -P <tag> 参数指定tag。
  3. @MTProxyBot查询信息有一定延迟,博主个人测试运行一小时后才能查到状态统计。

20190222更新

目前除了官方版本之外又有一些其他语言实现的第三方服务端,据称性能更好于官方版,并且配置也相对简单,记录网址如下。

]]>
0 https://blog.sandtears.com/2018/08/27/telegram-mtproto-proxy.html#comments https://blog.sandtears.com/feed/2018/08/27/telegram-mtproto-proxy.html
为Openwrt路由器添加手机USB网络支持 https://blog.sandtears.com/2018/08/15/openwrt-usb-ethernet-support.html https://blog.sandtears.com/2018/08/15/openwrt-usb-ethernet-support.html Wed, 15 Aug 2018 07:00:00 +0000 sandtears 最近一次外出旅游时想要把我日租卡的流量分享给同室的朋友,但是发现安卓手机自带的WiFi热点在连接设备过多(超过5台)时出现了严重的问题——网速变得很慢并且有明显延迟。猜想原因可能是手机热点没有考虑一对多连接的情况,NAT性能较差。

因此我决定下次旅游时携带一台路由器,手机一对一的将网络分享给路由器,然后由路由器完成NAT的步骤。

本想直接通过热点分享网络给路由器,但是考虑到有线终究相对稳妥,手头的闲置路由器(极路由2)刚好又有一个USB接口,因此决定通过USB来进行网络分享。

但是让Openwrt路由器支持手机分享网络需要进行几步设置,首先通过SSH连接到路由器(也可通过图形界面操作,只是安装软件过程较为繁琐):

opkg update 
opkg install kmod-usb-net kmod-usb-net-rndis kmod-usb-net-cdc-ether usbutils

然后将手机通过USB连接到路由器并开启USB网络分享,再执行:

uci set network.RNDIS=interface 
uci set network.RNDIS.ifname=usb0 
uci set network.RNDIS.proto=dhcp 
uci commit network

之后去Openwrt的luci图形化界面的Network->Interface页面,将usb0的防火墙设置成WAN,之后重启路由器即可。

如上配置只需进行一次,之后无需重新配置,只要将手机连接路由器并打开USB网络分享,路由器就会自动通过DHCP从手机获取IP地址并连接到网络。

]]>
0 https://blog.sandtears.com/2018/08/15/openwrt-usb-ethernet-support.html#comments https://blog.sandtears.com/feed/2018/08/15/openwrt-usb-ethernet-support.html
This page loaded in 0.000998 seconds