V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
binux
V2EX  ›  分享创造

每天自动签到 —— 我们不造脚本,我们造框架

  binux ·
binux · 2014 年 8 月 18 日 · 97357 次点击
这是一个创建于 4184 天前的主题,其中的信息可能已经有所发展或是发生改变。

这不是又一个XX网站自动签到脚本,更进一步,这是一个自动签到框架。
这是我对怎么抓取数据(另一个问题是怎么解析数据)的一个尝试吧。。

现在已经支持

  • V2EX
  • 什么值得买
  • 百度贴吧
  • 虾米
  • 9GAL

等7个网站

也可以自己制作签到脚本,使用或分享(这个还做不到全自动。。残念)

于是地址: https://qiandao.today/

关于帐号密码安全性问题

  • 网站强制使用 HTTPS 访问
  • 不用 sentry 之类会打整个栈的工具做日志收集
  • 所有用户敏感数据使用每个用户唯一的256位密钥加密
  • 再将用户密钥使用256位主密钥加密,所有解密过程只在内存中进行
  • 所有公开模板需要审核才能发布,防止用户密码被发送第三方

但限制于原理,为了回放请求,帐号密码终究还是要被解出来的。这时候只能说,请相信作者人品。

如果您还有担心,这个项目是开源的!
https://github.com/binux/qiandao
您可以从 qiandao.today 下载模板,上传自己的机器运行即可!

第 1 条附言  ·  2014 年 8 月 18 日
鉴于很容易被封IP,提供一个命令行运行方式,可以从 https://qiandao.today/ 下载模板,本地运行。只要加入 crontab 就可以按时签到了。

git clone https://github.com/binux/qiandao.git
pip install tornado pycurl u-msgpack-python jinja2 chardet requests

cd qiandao
./qiandao tpl.har --username=<username> --password=<password> [env.json]
即可
第 2 条附言  ·  2016 年 10 月 24 日
现在增加了 sqlite3 数据库支持,自己搭建更方便了
224 条回复    2021-08-16 14:53:20 +08:00
1  2  3  
freedomli
    101
freedomli  
   2014 年 8 月 27 日
@binux 502 Bad Gateway
binux
    102
binux  
OP
   2014 年 8 月 27 日
fineao
    103
fineao  
   2014 年 9 月 7 日
smzdm的一直失败,但是显示成功。。
binux
    104
binux  
OP
   2014 年 9 月 8 日
@fineao cookie 方式吗?
kcworms
    105
kcworms  
   2014 年 9 月 12 日
har编辑器的部分好棒,有可能增加“直接导出可以运行的脚本,并减少一些很重的依赖”功能吗?这样以前一些自己写脚本的机械性任务也可以……
binux
    106
binux  
OP
   2014 年 9 月 12 日
@kcworms 因为涉及发送请求,编码识别,chardet,requests少不了,因为变量模板jinja2少不了。其实也减少不了多少
AnJ1nG
    107
AnJ1nG  
   2014 年 9 月 12 日
git clone https://github.com/binux/qiandao.git
pip install tornado pycurl u-msgpack-python jinja2 chardet requests

cd qiandao
./qiandao tpl.har --username=<username> --password=<password> [env.json]

最后一步提示没有文件或目录..
binux
    108
binux  
OP
   2014 年 9 月 14 日 via Android
@AnJ1nG 你不会真的照着写吧,下载模板了吗
AnJ1nG
    109
AnJ1nG  
   2014 年 9 月 14 日
@binux 下载了smzdm的,然后改名smzdm.har 上传到qiandao目录 运行 也是提示这个啊...
binux
    110
binux  
OP
   2014 年 9 月 14 日
@AnJ1nG 那你写了 env.json?
AnJ1nG
    111
AnJ1nG  
   2014 年 9 月 14 日
@binux 没有 求教怎么写..?
binux
    112
binux  
OP
   2014 年 9 月 14 日
@AnJ1nG 我明白了,./qiandao.py 不是 ./qiandao
你贴错误信息好不好,没有文件或目录有好几种没有法。。
AnJ1nG
    113
AnJ1nG  
   2014 年 9 月 14 日
@binux
~/qiandao# ./qiandao.py smzdm.har --username=<username> --password=<password> [env.json]
-bash: username: 没有那个文件或目录
我系统改了语言中文的.如果有需要 我去改回英文吧..
AnJ1nG
    114
AnJ1nG  
   2014 年 9 月 14 日
@binux
-bash: username: No such file or directory
binux
    115
binux  
OP
   2014 年 9 月 14 日
~/qiandao# ./qiandao.py smzdm.har --username=<username> --password=<password> [env.json]

你真的这么打的?<username> 表示要替换成你自己的用户名。。。
AnJ1nG
    116
AnJ1nG  
   2014 年 9 月 14 日
@binux 额...
-bash: syntax error near unexpected token `654321'
gaody
    117
gaody  
   2014 年 9 月 14 日
测试服务器IP被封,哈哈哈,v2ex 出手了
终于看到today 的域名了,赞
binux
    118
binux  
OP
   2014 年 9 月 15 日
@AnJ1nG 你用户名密码里面有特殊字符?用 ' 单引号扩起来。。
AnJ1nG
    119
AnJ1nG  
   2014 年 9 月 15 日
@binux
我又来了...
密码括起来了...然后账号显示这个 - -
-bash: [email protected]: No such file or directory
binux
    120
binux  
OP
   2014 年 9 月 15 日
@AnJ1nG 额。。。你不会是还带着尖括号吧。。

比如你帐号是 [email protected] 密码是 abcd1234,你应该打

./qiandao.py smzdm.har --username='[email protected]' --password='abcd1234'
AnJ1nG
    121
AnJ1nG  
   2014 年 9 月 15 日
@binux
成功了...
真是太谢谢 ^ ^
ety001
    122
ety001  
   2014 年 9 月 17 日
域名很牛弊!
ptsa
    123
ptsa  
   2014 年 10 月 1 日
有openwrt 版本的就好了哈
tuutoo
    124
tuutoo  
   2014 年 10 月 4 日
简单 易用 哈哈 已经在自己的VPS上部署了!
Ansen
    125
Ansen  
   2014 年 10 月 8 日
模版下载不了。。
messyidea
    126
messyidea  
   2014 年 12 月 3 日 via Android
很有用,支持~
loveuqian
    127
loveuqian  
   2014 年 12 月 4 日
有测试过嘛。什么都没输入点签到。直接什么值得买就签到成功了
binux
    128
binux  
OP
   2014 年 12 月 4 日
@loveuqian 因为模板没写检测啊,需要你可以给它写一个
416877140
    129
416877140  
   2014 年 12 月 31 日
如果能直接导入已有的规则模板就好了...
apu159
    130
apu159  
   2015 年 1 月 6 日
File "./qiandao.py", line 16
print "%s tpl.har [--key=value] [env.json]" % sys.argv[0]
^
SyntaxError: invalid syntax
@binux 如何解决。
binux
    131
binux  
OP
   2015 年 1 月 6 日
@apu159 python 2.7
brucmao
    132
brucmao  
   2015 年 1 月 22 日
@binux 能不能支持115网盘自动签到和摇一摇
binux
    133
binux  
OP
   2015 年 1 月 22 日
@brucmao 群里貌似有人做了,但是没有发出来
icedx
    134
icedx  
   2015 年 1 月 25 日
忘记登录邮箱怎么破...
binux
    135
binux  
OP
   2015 年 1 月 25 日
@icedx 再注册一个?
icedx
    136
icedx  
   2015 年 1 月 25 日 via Android
@binux 能不能通过V2ID 找回…
Oucreate
    137
Oucreate  
   2015 年 1 月 25 日
揪到160天前的帖的我也是强。

Cannot THX no more.

Ps:
不勾选“我今天已经签过到了”它不会自动识别。。。╮(╯▽╰)╭,是因为徒增无谓的代码所以不必要?
fezar
    138
fezar  
   2015 年 2 月 3 日
我也遇到了什么值得买一直失败却显示成功。


是用户名密码模式。
binux
    139
binux  
OP
   2015 年 2 月 3 日
@fezar 用 cookie 版
Taiga
    140
Taiga  
   2015 年 2 月 12 日
@binux 自己搭建的签到怎么审核发布的模板呢
binux
    141
binux  
OP
   2015 年 2 月 12 日
@Taiga 到数据库里,把你的账户的 role 改成 admin
Taiga
    142
Taiga  
   2015 年 2 月 12 日
@binux thx,顺便提交了一个push_request.py下的bug修正
DylanRing0
    143
DylanRing0  
   2015 年 2 月 21 日
问下dalao怎么才能把web部分放到nginx下面去执行
(VPS上已有LNMP环境,占用了80、443端口)
binux
    144
binux  
OP
   2015 年 2 月 22 日 via Android
@DylanRing0 反代
DylanRing0
    145
DylanRing0  
   2015 年 2 月 22 日
@binux 好机智的解决办法 ==
rockfirm
    146
rockfirm  
   2015 年 2 月 28 日
@binux
Debian 6系统,运行第二步时出错,还要做特别的环境配置吗?
pip install tornado pycurl u-msgpack-python jinja2 chardet requests
Downloading/unpacking u-msgpack-python
Downloading u-msgpack-python-2.0.tar.gz
Running setup.py egg_info for package u-msgpack-python
Downloading/unpacking pycurl
Downloading pycurl-7.19.5.1.tar.gz (142Kb): 142Kb downloaded
Running setup.py egg_info for package pycurl
Traceback (most recent call last):
File "<string>", line 14, in <module>
File "/build/pycurl/setup.py", line 634, in <module>
ext = get_extension(split_extension_source=split_extension_source)
File "/build/pycurl/setup.py", line 392, in get_extension
ext_config = ExtensionConfiguration()
File "/build/pycurl/setup.py", line 65, in __init__
self.configure()
File "/build/pycurl/setup.py", line 100, in configure_unix
raise ConfigurationError(msg)
__main__.ConfigurationError: Could not run curl-config: [Errno 2] No such file or directory
Complete output from command python setup.py egg_info:
Traceback (most recent call last):

File "<string>", line 14, in <module>

File "/build/pycurl/setup.py", line 634, in <module>

ext = get_extension(split_extension_source=split_extension_source)

File "/build/pycurl/setup.py", line 392, in get_extension

ext_config = ExtensionConfiguration()

File "/build/pycurl/setup.py", line 65, in __init__

self.configure()

File "/build/pycurl/setup.py", line 100, in configure_unix

raise ConfigurationError(msg)

__main__.ConfigurationError: Could not run curl-config: [Errno 2] No such file or directory

----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /root/.pip/pip.log
regent
    147
regent  
   2015 年 4 月 7 日
如果卸载要怎么做
JwhSir
    148
JwhSir  
   2015 年 4 月 18 日
时隔这么久我找出了这个旧帖...还是很有帮助
vainly
    149
vainly  
   2015 年 4 月 21 日
@binux 同学,qiandao站点是停用了吗?无法打开,
binux
    150
binux  
OP
   2015 年 4 月 21 日
@vainly 机器挂了,等一两天吧。。
OiCkilL
    151
OiCkilL  
   2015 年 4 月 23 日
什么值得买的两个公共模板貌似月中的时候就失效了
binux
    152
binux  
OP
   2015 年 4 月 23 日
@OiCkilL 因为张大妈加了一个需要执行 js 才能获得的参数,光用模板还不行,等我有时间
tobyzhong
    153
tobyzhong  
   2015 年 4 月 25 日
您好我想做一个网易云音乐的签到脚本 能用得上您这个嘛?还是要我重新写
binux
    154
binux  
OP
   2015 年 4 月 25 日
@tobyzhong 如果只是模拟一些请求,不需要计算,应该可以吧
anyfc
    155
anyfc  
   2015 年 4 月 27 日
zimizu.tv刚刚开放了签到升级功能,是否有计划加入这个网站的自动签到?
binux
    156
binux  
OP
   2015 年 4 月 27 日
@anyfc 其实我更希望用户能直接创建模板。。
targettttt
    157
targettttt  
   2015 年 5 月 9 日
@anyfc 同求 怀念以前的自动登录,手动的就忘记了,然后80+的记录就没有了ಠ_ಠ
anyfc
    158
anyfc  
   2015 年 5 月 9 日
huaxing
    159
huaxing  
   2015 年 5 月 30 日
@binux 请看下这个网站《一键签到》官方网站: http://oks.shumei.me 里面有许多您没有的,可以添加下另附源码下载:http://oks.shumei.me/supportlist.html
binux
    160
binux  
OP
   2015 年 5 月 30 日 via Android
@huaxing 因为我并不想维护那么多网站的脚本。。我只做了我用到的
lekai63
    161
lekai63  
   2015 年 6 月 2 日
@binux 我git后在自己服务器上手动执行都是没问题的。但是加入crontab后,v2ex这种以用户名密码方式的执行成功。smzdm这种以cookie形式的就是不成功。。。。求解啊楼主~~
非IT从业人员知识积累不够T.T
binux
    162
binux  
OP
   2015 年 6 月 2 日
@lekai63 smzdm 脚本已经失效了
lekai63
    163
lekai63  
   2015 年 6 月 2 日
@binux 可是在你的qiandao.today上使用没问题啊~~ 所以现在还是在你的网站上用着呢~~ 嘿嘿
binux
    164
binux  
OP
   2015 年 6 月 2 日
@lekai63 不可能,smzdm 早失效了。你确认签到是成功的?
lekai63
    165
lekai63  
   2015 年 6 月 2 日
@binux cookie版一直可以。我就是想在自己服务器上执行smzdm的cookie版总是失败。。
binux
    166
binux  
OP
   2015 年 6 月 2 日
@lekai63 你登录 smzdm 看,签到成功了?
lekai63
    167
lekai63  
   2015 年 6 月 2 日
@binux 是啊是啊 成功的是cookie版签到的
Mizzi
    168
Mizzi  
   2015 年 6 月 8 日
@binux 自建的话怎样设置定时自动签到呢?
binux
    169
binux  
OP
   2015 年 6 月 8 日
Mizzi
    170
Mizzi  
   2015 年 6 月 8 日
@binux 感谢,是保证一直后台运行即可吗?新添加的任务后不需要先停止再启动是吧?
binux
    171
binux  
OP
   2015 年 6 月 8 日   ❤️ 1
@Mizzi 不用
Mizzi
    172
Mizzi  
   2015 年 6 月 9 日
@Mizzi 再次求解代理格式是这样吗?

{'http': "http://x:x"},
{'http': "http://x:x"}
binux
    173
binux  
OP
   2015 年 6 月 9 日   ❤️ 1
proxies = [
{'host': '', 'port':, 'username': '', 'password': ''},
]
@Mizzi
Mizzi
    174
Mizzi  
   2015 年 6 月 9 日
@binux 赞!感谢!!
Mizzi
    175
Mizzi  
   2015 年 6 月 10 日
@binux 你好,根据这个格式设置了无验证的http代理,确认代理没有问题,但是出现错误 NotImplementedError('proxy_host not support')

请问这是哪里的问题呢?还是代理需要的不是http代理吗?
binux
    176
binux  
OP
   2015 年 6 月 10 日
@Mizzi 你没装 pycurl ?
Mizzi
    177
Mizzi  
   2015 年 6 月 10 日
@binux 确实没有安装,马上试试,感谢作者!
viko16
    178
viko16  
   2015 年 6 月 12 日
@binux qiandao.today 被 v2ex 封 ip 了么? 一直 403 好心疼 (只是无责任猜测
xiaocsl
    179
xiaocsl  
   2015 年 7 月 15 日
在VPS上部署了一份

现在唯一的问题是他不自动签到.到点后还是正在准备签到.
3分钟过后还是现实"正在准备签到"
手动点立刻签到,没问题,会立刻签到.
binux
    180
binux  
OP
   2015 年 7 月 15 日   ❤️ 1
xiaocsl
    181
xiaocsl  
   2015 年 7 月 15 日
@binux 已经跑起来了,Tks
neroanelli
    182
neroanelli  
   2015 年 9 月 8 日
@binux 遇到以下问题,不知如何解决?运行环境是 x86 OpenWRT.
root@host:~/qiandao# ./qiandao.py hdpfans.har --username='xxx' --password='xxxxxxx'
ERROR:root:(48, '')
Traceback (most recent call last ):
File "/root/qiandao/libs/fetcher.py", line 361, in do_fetch
), proxy=proxy )
File "/usr/lib/python2.7/site-packages/tornado/gen.py", line 870, in run
value = future.result ()
File "/usr/lib/python2.7/site-packages/tornado/concurrent.py", line 215, in result
raise_exc_info (self._exc_info )
File "/usr/lib/python2.7/site-packages/tornado/gen.py", line 876, in run
yielded = self.gen.throw (*exc_info )
File "/root/qiandao/libs/fetcher.py", line 330, in fetch
response = yield self.client.fetch (req )
File "/usr/lib/python2.7/site-packages/tornado/gen.py", line 870, in run
value = future.result ()
File "/usr/lib/python2.7/site-packages/tornado/concurrent.py", line 215, in result
raise_exc_info (self._exc_info )
File "<string>", line 3, in raise_exc_info
error: (48, '')
qiandao failed! failed at 1/3 request, error:error (48, ''), http://www.hdpfans.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1
KevinChan
    183
KevinChan  
   2015 年 9 月 10 日
@fineao 同样的问题
neroanelli
    184
neroanelli  
   2015 年 9 月 11 日
@neroanelli
额,还是回复一下。问题已经解决,在 OpenWrt 上搭建成功,包括 web ( mysql 、 redis )。产生上面的错误是因为默认情况下, OpenWrt 的 libcurl 功能不完整,重新编译一个完整版的 libcurl 安装搞定。
badorange
    185
badorange  
   2015 年 10 月 9 日
手机 APP 签到,能不能用?
hobo6019
    186
hobo6019  
   2016 年 3 月 4 日
好棒,自己摸索做了个 discuz 的自动签到,竟然真的成功了,还能从网页提取变量。。。好神奇。。。
micookie
    187
micookie  
   2016 年 4 月 9 日
感谢。~
zhangfan
    188
zhangfan  
   2016 年 5 月 19 日
战略 mark
feixiangdao
    189
feixiangdao  
   2016 年 5 月 23 日
请教
./qiandao tpl.har --username=<username> --password=<password> [env.json]
最后的[env.json] 是指什么?
cookie 的命令行格式是什么?
什么值得买还能用吗?
binux
    190
binux  
OP
   2016 年 5 月 23 日
@feixiangdao env.json 是可选的,格式为 dict ,内容和前面的参数一样
cookie 为 cookie string 形式,和 web 界面上插件获取的格式一样。
什么值得买应该不能用了
xzc0001
    191
xzc0001  
   2016 年 8 月 27 日
不知道京东会员签到是谁维护的哦。现在贵站的京东会员签到已失效,自己尝试修改失败,似乎现在有一个 token ,不知道是如何获取的。
standin000
    192
standin000  
   2016 年 9 月 19 日
楼主厉害,顶顶!
mkjszx
    193
mkjszx  
   2016 年 10 月 14 日
自己能用空间搭建吗?如何搭建?来个教程吧。
ixinshang
    194
ixinshang  
   2016 年 10 月 22 日
@hobo6019 请问能分享下吗
wujunze
    195
wujunze  
   2016 年 11 月 30 日
wq2016
    196
wq2016  
   2016 年 12 月 23 日
666
kookpua
    197
kookpua  
   2017 年 3 月 9 日
字幕组和吾爱破解 获取不了 cookie 了呀
kookpua
    198
kookpua  
   2017 年 3 月 9 日
哦 是我使用不当~应该要安装 cookie 获取助手后才能使用
chosen1st
    199
chosen1st  
   2017 年 7 月 21 日
@binux 想请教一下 我想修复目前的 kindbook 网站的模板 因为这个网站从 http 切到 https 了 但是不知道如何在创建模板时利用 Cookies 获取助手来拿 cookie O(∩_∩)O 谢谢
binux
    200
binux  
OP
   2017 年 7 月 21 日
@chosen1st 模板里面是 https 就可以了啊
1  2  3  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2316 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 34ms · UTC 06:57 · PVG 14:57 · LAX 22:57 · JFK 01:57
♥ Do have faith in what you're doing.