关于信图的抢座位大战
上半年的时候,我用 python 写了一个抢座位的脚本,尝试着部署服务器但失败了。
为什么呢?当时我以为是因为利昂做了 ip 限制,只有学校附近的 ip 才能抢。
后来我去无锡实习,发现照样能登录,事情就有点搞笑了。
哪来的 ip 限制呢?
十月份回来后,我直接用 mac 的定时任务完成了抢座位,不过很麻烦,每天 10:45 的时候都要打开电脑。
到了今天,我忍不了了,势必要把这个脚本部署到服务器。
莫名其妙的 python
一开始,我直接把 python 脚本放到服务器上执行,出现了一个 ssl error.
好吧,我把 https 全部改成 http,发现好像本地执行是没问题的。
一部署到服务器,又不行了…
可恶的 python, 我受不了了,直接用 golang 重写。
一写就是一天,还好 golang 编译出来的在服务器上运行得很完美。
终于不用在傻乎乎地每天守在电脑前了…
crontab 定时任务
crontab -l
crontab -e
# 我的脚本
# m h dom mon dow command
45 22 * * * /home/whulib >> /home/log
30 11 * * * /home/whulib >> /home/log
用 gomail 发送预约结果
用普通的 qq 邮箱好像不大行,需要使用企业邮箱
package util
import (
"github.com/go-gomail/gomail"
"strings"
)
type EmailParam struct {
// ServerHost 邮箱服务器地址,如腾讯企业邮箱为smtp.exmail.qq.com
ServerHost string
// ServerPort 邮箱服务器端口,如腾讯企业邮箱为465
ServerPort int
// FromEmail 发件人邮箱地址
FromEmail string
// FromPass 发件人邮箱密码(注意,这里是明文形式)
FromPass string
// Toes 接收者邮件,如有多个,则以英文逗号(“,”)隔开,不能为空
Toes string
// CCers 抄送者邮件,如有多个,则以英文逗号(“,”)隔开,可以为空
CCers string
// 主题
Subject string
// 正文 text/html
Body string
}
// SendEmail body支持html格式字符串
func SendEmail(ep *EmailParam) {
if len(ep.Toes) == 0 {
return
}
var tos []string
for _, tmp := range strings.Split(ep.Toes, ",") {
tos = append(tos, strings.TrimSpace(tmp))
}
msg := gomail.NewMessage()
// 收件人可以有多个,故用此方式
msg.SetHeader("To", tos...)
//抄送列表
if len(ep.CCers) != 0 {
for _, tmp := range strings.Split(ep.CCers, ",") {
tos = append(tos, strings.TrimSpace(tmp))
}
msg.SetHeader("Cc", tos...)
}
// 发件人
// 第三个参数为发件人别名,如"李大锤",可以为空(此时则为邮箱名称)
msg.SetAddressHeader("From", ep.FromEmail, "bellman")
// 主题
msg.SetHeader("Subject", ep.Subject)
// 正文
msg.SetBody("text/html", ep.Body)
d := gomail.NewDialer(ep.ServerHost, ep.ServerPort, ep.FromEmail, ep.FromPass)
// 发送
err := d.DialAndSend(msg)
if err != nil {
panic(err)
}
}