简介

在二娘群聊区 发糖骗糖串 已经成为常态,虽已有发糖插件但一个一个 UID 输入十分繁琐。
所以我基于 Python 编写了基于群聊区自动发糖的脚本供各位使用~
首先放出 GitHubGayHub 项目地址:

https://github.com/sulf1ron/u2

喜欢的话欢迎 Watch + Star + Fork + Follow 四连~

脚本特性

对发糖串进行切割,(自动处理)
检测并去除表情符号,(防止混淆)
读取 UID 并检测坏人,(防骗糖 233)
预处理 UID 是否存在,(防止领糖者手滑)
U2娘掉线检测,离线时自动重试(确保发糖进程完整)
……

更新日志

之前的懒得写了(躺)
有兴趣的去看 GitHub 历史吧
2018.02.07 00:08 : 发布 + 教程
2018.02.09 16:33 : 大于5金分割处理 + 优化代码

未来展望

大于 5金 分割处理
论坛链接发糖
……


那么接下来就开始教程部分了!


下载脚本

所需文件

requirements.txt # 依赖列表
api.py           # 基础 API
settings.sample  # 通行证配置样例
sweet.py         # 发糖脚本

配置通行证

浏览器 console 中输入:

document.cookie

填入 settings.sample 中并改名为 settings.ini

配置 Python3

安装

版本号:(理论上 Python3 均可)

> python -V
Python 3.6.3

建议使用相同版本:

https://www.python.org/downloads/release/python-363

依赖

pip install -r requirements.txt

若国内连接性不佳可以换用国内源如:(添加参数)

-i https://pypi.tuna.tsinghua.edu.cn/simple
-i https://mirrors.aliyun.com/pypi/simple

开始使用

运行

python sweet.py

根据详细的提示操作即可

说明

坏人:同一发糖串多次领糖的坏蛋 QAQ,如:

44929 [em28] <-- ...  <--  44929 [em28]

预处理:检测 UID 是否存在

常见错误

等你们反馈了(懒)

报错

若出现报错请先根据提示信息尝试解决
若无法解决或确认为非环境原因bug请发 issue 反馈:

https://github.com/sulf1ron/u2/issues

简介

SSH 验证身份有两种方式:密码和密钥,前者不安全,可能会被爆破,而且不便捷,每次登陆时都需要输入密码。因此,我们可以使用密钥登陆,安全便捷。

本地

首先在本地创建公私钥:

ssh-keygen

按提示操作保存证书,可以给私钥设定密码,也可回车跳过,创建完成后会得到公钥id_rsa.pub和私钥id_rsa

远程

scp ~/.ssh/id_rsa.pub user@server:/home/user/

id_rsa.pub上传至服务器(通过 SCP,SFTP 等)。

cat id_rsa.pub > ~/.ssh/authorized_keys

然后将公钥加入信任列表,

chmod 600 authorized_keys
chmod 700 ~/.ssh

确保文件权现正确。

PasswordAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

编辑配置文件/etc/ssh/sshd_config,加入或修改以上几行。

service ssh restart
service sshd restart

重启SSH服务,并尝试登陆,若无需输入密码直接登陆则说明配置成功。

附加

除了更改为密钥登陆,SSH端口的设置也影响到安全性,使用默认的22端口会极大增加被爆破的可能性。

Port 8789

建议修改/etc/ssh/sshd_config中端口至非22。


概述

吸引用户的是内容,而不是平台。但一个优秀的平台可以让内容增色不少,大幅提升用户的阅读体验。那么,本篇文章就意在让潜在的作者不被博客平台所困扰,从零开始搭建属于自己的博客。
本文需要用户具备基本信息素养及学习查询能力

服务器

首先先租一台虚拟专用服务器VPS,记录IP并连上它(不同操作系统系统所需工具与方法不同,谷歌一下登进去就行,在此不再赘述)。因为笔者喜好,选用 LAMP 这一套主流软件(Ubuntu 18 + Apache2 + MySQL5.7 + PHP7.2),分别代表操作系统、网站服务器软件,数据库以及超文本预处理器。
操作系统在租用 VPS 的时候会提供选择,如果有 Ubuntu 18.04 则选择它,如果没有就选择 Ubuntu 16/14.04 然后执行 do-release-upgrade升级至 18.04。

apt update
apt upgrade

执行基本软件升级操作,根据屏幕提示输入y
一般互联网内容提供商IDC直接允许root登陆,若不然则需在每条命令前加上sudo,可以参照这篇文章为服务器设置密钥登陆增强安全性。

域名

去阿里云之类的域名商买一个心仪的域名,去 DNS 管理器中设置一个@A解析至IP

LAMP

apt install apache2
apt install mysql-server
apt install php7.2 php7.2-mysql php7.2-mbstring php7.2-curl libapache2-mod-php7.2
apt install nano git unzip

利用包管理器(APT)安装软件,十分迅速。

mysql_secure_installation

设置 MySQL 密码,并进行安全加固(建议全部应用)
非 root 身份执行 mysql_secure_installation时请使用sudo

cd /var/www/html

切换到网站默认目录,

nano info.php

用文本编辑器nano创建info.php

<?php
phpinfo();
?>

并输入以上内容,CTRL+O保存,CTRL+X退出。
浏览器中访问IP/info.php,若正常显示相关信息则配置正常。

Typecho

Typecho 是一款轻量级的博客软件,而且插件与外观颇丰。

cd /var/www
wget http://typecho.org/downloads/1.1-17.10.30-release.tar.gz
tar zxvf 1.1-17.10.30-release.tar.gz
rm 1.1-17.10.30-release.tar.gz
mv build typecho

下载 Typecho 并解压。

Vhost

cd /etc/apache2/sites-available
nano typecho.conf

进入 Apache2 网站目录并创建typecho.conf

<VirtualHost *:80>
        ServerName sorx.tech
        ServerAdmin i@sor.moe
        DocumentRoot /var/www/typecho

        <Directory "/var/www/typecho/">
                Options FollowSymLinks
                AllowOverride All
                Order deny,allow
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/typecho.error.log
        CustomLog ${APACHE_LOG_DIR}/typecho.access.log combined
</VirtualHost>

写入以上内容,替换域名与邮箱,并保存退出。

a2enmod rewrite
a2ensite typecho.conf
systemctl restart apache2

开启重写插件并启用网站。

MySQL

mysql -u root -p

输入密码进入MySQL控制台,输入create database typecho;创建新数据库,exit退出。

安装

随后浏览器打开域名,按照提示安装即可。

进阶

地址重写

cd /var/www/typecho
nano .htaccess

创建.htaccess文件,

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]

写入如上内容,然后在https://sorx.tech/admin/options-permalink.php 界面中开启(不用理会错误提示)

SSL

HTTPS 协议可以有效防止被运营商劫持等流氓问题,因此建议为博客配置 SSL。

curl https://get.acme.sh | bash

acme.shLet's Encrypt 的一款第三方工具,可以提供免费 SSL 证书。

cd ~/.acme.sh
./acme.sh --issue -d *.sorx.tech -d sorx.tech --dns dns_azure

使用acme.sh签发证书,DNS API 配置说明见

nano /etc/apache2/sites-available/typecho.conf

然后编辑 Vhost 配置文件,

<VirtualHost *:443>
        ServerName sorx.tech
        ServerAdmin i@sor.moe
        DocumentRoot /var/www/sorx.tech

        <Directory "/var/www/sorx.tech/">
                Options FollowSymLinks
                AllowOverride All
                Order deny,allow
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/sorx.tech.error.log
        CustomLog ${APACHE_LOG_DIR}/sorx.tech.access.log combined

        SSLCertificateFile /home/sor/.acme.sh/*.sorx.tech/fullchain.cer
        SSLCertificateKeyFile /home/sor/.acme.sh/*.sorx.tech/*.sorx.tech.key
        Include /etc/ssl/options-ssl-apache.conf
</VirtualHost>

参照示例更改,并systemctl reload apache2刷新 Apache2

robots.txt

cd /var/www/typcheo
nano robots.txt

robots.txt 告诉搜索引擎哪些可以收录,并告知其站点地图。

User-agent: *
Disallow: /admin/
Disallow: /install/
Allow: /
sitemap: https://sorx.tech/sitemap.xml

写入以上内容,保存退出。

外观与插件

https://github.com/zgq354/typecho-theme-next
https://github.com/journey-ad/MDRuby-Typecho-Plugin
https://github.com/journey-ad/HyperMD-Typecho-Plugin
https://github.com/kokororin/typecho-plugin-Access

本站目前使用的如上,在 repo 页都有详细说明,可以自行选择安装。


概述

在用过的各类即时通讯软件IM中,微信是最不让人省心的一个:丢记录、电脑端必须扫码登陆……,但由于不少老师和长辈都习惯于使用微信,不得不下载安装并经常地打开查看,令人心烦。正值大学开学前发现同时有微信班群和QQ班群,微信群冷但辅导员在里面,重要信息可能会在上面发布,突发奇想是否可以写个机器人自动将微信信息转发到QQ(防止刷屏所以单向转发)。

依赖

经过资料查阅,锁定了 wxpyqqbot两个功能比较完善的 Python 库来实现这个机器人,地址如下:

wxpy: https://github.com/youfou/wxpy
qqbot: https://github.com/pandolia/qqbot

二者都使用了相应的网页接口Web API实现功能,使用起来还算稳定。为了实现功能,我们首先需要抓取微信群内信息,然后调用QQ发送到群。

QQ

由于 qqbot 无法在以实例形式被调用时指定参数,首先需要修改根配置适应机器人运行的 cli 环境:
编辑 dist-packages/qqbot/qconf.py,把rootConfcmdQrcode的值设置为True,然后安装pillowwcwidth两个库,从而使二维码能以文本形式在终端中输出。

from qqbot import _bot as qbot
qbot.Login(['-q', '1591075776'])

首先先登陆QQ,用参数形式指定登陆的QQ号(在一定时间内无需重新扫码)。

qq = qbot.List('group', '清华土木大类18新生群')[0]

通过QQ群名定位群聊并保存为变量,

qbot.SendTo(qq, text, resendOn1202 = True)

然后便可以使用SendTo将文本发送至指定QQ群。

微信

from wxpy import *
wbot = Bot(cache_path = True, console_qr = True)

首先先登陆微信,两个参数分别意味着缓存登陆信息(重新登陆时只需点按确认而不必重新扫码)以及在终端中输出登陆二维码(默认为弹出二维码图片,而机器人运行在 cli 中)

wx = wbot.chats().search('清华土木大类18新生群')[0]

然后通过群名称定位到需要转发消息的群聊。

文字信息

@wbot.register(wx, TEXT)
def wx2qq_text(msg):
    text = '[%s] %s' % (msg.member.name, msg.text)
    qbot.SendTo(qq, text, resendOn1202 = True)

文字类型容易处理,注册了文字类消息后将格式化字符串发送至QQ群即可;

图片信息

@wbot.register(wx, PICTURE)
def wx2qq_pic(msg):
    global pic
    msg.get_file(save_path = 'pic.jpg')
    pic = open('pic.jpg', 'rb')
    url = 'https://sm.ms/api/upload'
    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'}
    files = {'smfile': ('pic.jpg', pic, 'image/jpeg')}
    recv = requests.post(url, headers = headers, files = files).text
    recv = json.loads(recv)
    url = recv['data']['url']
    text = '[%s]: %s' % (msg.member.name, url)
    qbot.SendTo(qq, text, resendOn1202 = True)

而图片信息就相对难处理,由于 SmartQQ (qqbot 依赖的 Web API)只能发送文字,因此需要曲线救国,将图片上传至图床后发送图片链接。这里需要避免的坑在于虽然没有明说,但sm.ms图床的API需要伪装浏览器用户标识User Agent才能正常使用

embed()

阻塞线程后,机器人开始工作。