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

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

  binux ·
binux · 2014-08-18 09:19:14 +08:00 · 93443 次点击
这是一个创建于 3532 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

现在已经支持

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

等7个网站

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

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

关于帐号密码安全性问题

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

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

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

第 1 条附言  ·  2014-08-18 13:25:07 +08:00
鉴于很容易被封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 21:39:58 +08:00
现在增加了 sqlite3 数据库支持,自己搭建更方便了
224 条回复    2021-08-16 14:53:20 +08:00
1  2  3  
freedomli
    101
freedomli  
   2014-08-27 15:14:49 +08:00
@binux 502 Bad Gateway
binux
    102
binux  
OP
   2014-08-27 15:27:00 +08:00
fineao
    103
fineao  
   2014-09-07 16:42:24 +08:00
smzdm的一直失败,但是显示成功。。
binux
    104
binux  
OP
   2014-09-08 10:01:10 +08:00
@fineao cookie 方式吗?
kcworms
    105
kcworms  
   2014-09-12 09:49:38 +08:00
har编辑器的部分好棒,有可能增加“直接导出可以运行的脚本,并减少一些很重的依赖”功能吗?这样以前一些自己写脚本的机械性任务也可以……
binux
    106
binux  
OP
   2014-09-12 10:23:32 +08:00
@kcworms 因为涉及发送请求,编码识别,chardet,requests少不了,因为变量模板jinja2少不了。其实也减少不了多少
AnJ1nG
    107
AnJ1nG  
   2014-09-12 13:57:40 +08:00
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-09-14 09:11:22 +08:00 via Android
@AnJ1nG 你不会真的照着写吧,下载模板了吗
AnJ1nG
    109
AnJ1nG  
   2014-09-14 14:46:14 +08:00
@binux 下载了smzdm的,然后改名smzdm.har 上传到qiandao目录 运行 也是提示这个啊...
binux
    110
binux  
OP
   2014-09-14 15:19:18 +08:00
@AnJ1nG 那你写了 env.json?
AnJ1nG
    111
AnJ1nG  
   2014-09-14 17:23:48 +08:00
@binux 没有 求教怎么写..?
binux
    112
binux  
OP
   2014-09-14 18:30:36 +08:00
@AnJ1nG 我明白了,./qiandao.py 不是 ./qiandao
你贴错误信息好不好,没有文件或目录有好几种没有法。。
AnJ1nG
    113
AnJ1nG  
   2014-09-14 18:36:00 +08:00
@binux
~/qiandao# ./qiandao.py smzdm.har --username=<username> --password=<password> [env.json]
-bash: username: 没有那个文件或目录
我系统改了语言中文的.如果有需要 我去改回英文吧..
AnJ1nG
    114
AnJ1nG  
   2014-09-14 18:43:11 +08:00
@binux
-bash: username: No such file or directory
binux
    115
binux  
OP
   2014-09-14 19:00:43 +08:00
~/qiandao# ./qiandao.py smzdm.har --username=<username> --password=<password> [env.json]

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

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

./qiandao.py smzdm.har --username='[email protected]' --password='abcd1234'
AnJ1nG
    121
AnJ1nG  
   2014-09-15 16:38:15 +08:00
@binux
成功了...
真是太谢谢 ^ ^
ety001
    122
ety001  
   2014-09-17 10:42:53 +08:00
域名很牛弊!
ptsa
    123
ptsa  
   2014-10-01 13:41:00 +08:00
有openwrt 版本的就好了哈
tuutoo
    124
tuutoo  
   2014-10-04 17:15:29 +08:00
简单 易用 哈哈 已经在自己的VPS上部署了!
Ansen
    125
Ansen  
   2014-10-08 09:47:36 +08:00
模版下载不了。。
messyidea
    126
messyidea  
   2014-12-03 17:24:20 +08:00 via Android
很有用,支持~
loveuqian
    127
loveuqian  
   2014-12-04 09:35:11 +08:00
有测试过嘛。什么都没输入点签到。直接什么值得买就签到成功了
binux
    128
binux  
OP
   2014-12-04 10:25:43 +08:00
@loveuqian 因为模板没写检测啊,需要你可以给它写一个
416877140
    129
416877140  
   2014-12-31 21:36:04 +08:00
如果能直接导入已有的规则模板就好了...
apu159
    130
apu159  
   2015-01-06 19:33:20 +08:00
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-01-06 22:07:06 +08:00
@apu159 python 2.7
brucmao
    132
brucmao  
   2015-01-22 10:52:56 +08:00
@binux 能不能支持115网盘自动签到和摇一摇
binux
    133
binux  
OP
   2015-01-22 11:29:23 +08:00
@brucmao 群里貌似有人做了,但是没有发出来
icedx
    134
icedx  
   2015-01-25 15:38:33 +08:00
忘记登录邮箱怎么破...
binux
    135
binux  
OP
   2015-01-25 15:53:32 +08:00
@icedx 再注册一个?
icedx
    136
icedx  
   2015-01-25 17:13:22 +08:00 via Android
@binux 能不能通过V2ID 找回…
Oucreate
    137
Oucreate  
   2015-01-25 17:15:02 +08:00
揪到160天前的帖的我也是强。

Cannot THX no more.

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


是用户名密码模式。
binux
    139
binux  
OP
   2015-02-03 15:06:53 +08:00
@fezar 用 cookie 版
Taiga
    140
Taiga  
   2015-02-12 10:21:48 +08:00
@binux 自己搭建的签到怎么审核发布的模板呢
binux
    141
binux  
OP
   2015-02-12 10:32:36 +08:00
@Taiga 到数据库里,把你的账户的 role 改成 admin
Taiga
    142
Taiga  
   2015-02-12 14:53:07 +08:00
@binux thx,顺便提交了一个push_request.py下的bug修正
DylanRing0
    143
DylanRing0  
   2015-02-21 21:24:47 +08:00
问下dalao怎么才能把web部分放到nginx下面去执行
(VPS上已有LNMP环境,占用了80、443端口)
binux
    144
binux  
OP
   2015-02-22 19:54:18 +08:00 via Android
@DylanRing0 反代
DylanRing0
    145
DylanRing0  
   2015-02-22 21:20:46 +08:00
@binux 好机智的解决办法 ==
rockfirm
    146
rockfirm  
   2015-02-28 20:49:21 +08:00
@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-04-07 22:10:49 +08:00
如果卸载要怎么做
JwhSir
    148
JwhSir  
   2015-04-18 15:26:53 +08:00
时隔这么久我找出了这个旧帖...还是很有帮助
vainly
    149
vainly  
   2015-04-21 12:05:37 +08:00
@binux 同学,qiandao站点是停用了吗?无法打开,
binux
    150
binux  
OP
   2015-04-21 12:23:54 +08:00
@vainly 机器挂了,等一两天吧。。
OiCkilL
    151
OiCkilL  
   2015-04-23 11:59:25 +08:00
什么值得买的两个公共模板貌似月中的时候就失效了
binux
    152
binux  
OP
   2015-04-23 12:22:04 +08:00
@OiCkilL 因为张大妈加了一个需要执行 js 才能获得的参数,光用模板还不行,等我有时间
tobyzhong
    153
tobyzhong  
   2015-04-25 10:09:15 +08:00
您好我想做一个网易云音乐的签到脚本 能用得上您这个嘛?还是要我重新写
binux
    154
binux  
OP
   2015-04-25 11:10:25 +08:00
@tobyzhong 如果只是模拟一些请求,不需要计算,应该可以吧
anyfc
    155
anyfc  
   2015-04-27 22:34:42 +08:00
zimizu.tv刚刚开放了签到升级功能,是否有计划加入这个网站的自动签到?
binux
    156
binux  
OP
   2015-04-27 22:38:06 +08:00
@anyfc 其实我更希望用户能直接创建模板。。
targettttt
    157
targettttt  
   2015-05-09 16:33:09 +08:00
@anyfc 同求 怀念以前的自动登录,手动的就忘记了,然后80+的记录就没有了ಠ_ಠ
anyfc
    158
anyfc  
   2015-05-09 19:00:37 +08:00
huaxing
    159
huaxing  
   2015-05-30 18:12:17 +08:00
@binux 请看下这个网站《一键签到》官方网站: http://oks.shumei.me 里面有许多您没有的,可以添加下另附源码下载:http://oks.shumei.me/supportlist.html
binux
    160
binux  
OP
   2015-05-30 19:53:43 +08:00 via Android
@huaxing 因为我并不想维护那么多网站的脚本。。我只做了我用到的
lekai63
    161
lekai63  
   2015-06-02 22:13:02 +08:00
@binux 我git后在自己服务器上手动执行都是没问题的。但是加入crontab后,v2ex这种以用户名密码方式的执行成功。smzdm这种以cookie形式的就是不成功。。。。求解啊楼主~~
非IT从业人员知识积累不够T.T
binux
    162
binux  
OP
   2015-06-02 22:19:58 +08:00
@lekai63 smzdm 脚本已经失效了
lekai63
    163
lekai63  
   2015-06-02 22:25:10 +08:00
@binux 可是在你的qiandao.today上使用没问题啊~~ 所以现在还是在你的网站上用着呢~~ 嘿嘿
binux
    164
binux  
OP
   2015-06-02 22:26:04 +08:00
@lekai63 不可能,smzdm 早失效了。你确认签到是成功的?
lekai63
    165
lekai63  
   2015-06-02 22:31:32 +08:00
@binux cookie版一直可以。我就是想在自己服务器上执行smzdm的cookie版总是失败。。
binux
    166
binux  
OP
   2015-06-02 22:34:34 +08:00
@lekai63 你登录 smzdm 看,签到成功了?
lekai63
    167
lekai63  
   2015-06-02 23:06:50 +08:00
@binux 是啊是啊 成功的是cookie版签到的
Mizzi
    168
Mizzi  
   2015-06-08 14:13:51 +08:00
@binux 自建的话怎样设置定时自动签到呢?
binux
    169
binux  
OP
   2015-06-08 14:17:21 +08:00
Mizzi
    170
Mizzi  
   2015-06-08 14:19:31 +08:00
@binux 感谢,是保证一直后台运行即可吗?新添加的任务后不需要先停止再启动是吧?
binux
    171
binux  
OP
   2015-06-08 14:21:23 +08:00   ❤️ 1
@Mizzi 不用
Mizzi
    172
Mizzi  
   2015-06-09 13:23:50 +08:00
@Mizzi 再次求解代理格式是这样吗?

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

请问这是哪里的问题呢?还是代理需要的不是http代理吗?
binux
    176
binux  
OP
   2015-06-10 10:25:29 +08:00
@Mizzi 你没装 pycurl ?
Mizzi
    177
Mizzi  
   2015-06-10 10:30:03 +08:00
@binux 确实没有安装,马上试试,感谢作者!
viko16
    178
viko16  
   2015-06-12 13:35:34 +08:00
@binux qiandao.today 被 v2ex 封 ip 了么? 一直 403 好心疼 (只是无责任猜测
xiaocsl
    179
xiaocsl  
   2015-07-15 09:05:39 +08:00
在VPS上部署了一份

现在唯一的问题是他不自动签到.到点后还是正在准备签到.
3分钟过后还是现实"正在准备签到"
手动点立刻签到,没问题,会立刻签到.
binux
    180
binux  
OP
   2015-07-15 10:14:30 +08:00   ❤️ 1
xiaocsl
    181
xiaocsl  
   2015-07-15 10:49:30 +08:00
@binux 已经跑起来了,Tks
neroanelli
    182
neroanelli  
   2015-09-08 21:33:56 +08:00
@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-09-10 09:23:11 +08:00
@fineao 同样的问题
neroanelli
    184
neroanelli  
   2015-09-11 16:57:14 +08:00
@neroanelli
额,还是回复一下。问题已经解决,在 OpenWrt 上搭建成功,包括 web ( mysql 、 redis )。产生上面的错误是因为默认情况下, OpenWrt 的 libcurl 功能不完整,重新编译一个完整版的 libcurl 安装搞定。
badorange
    185
badorange  
   2015-10-09 19:13:16 +08:00
手机 APP 签到,能不能用?
hobo6019
    186
hobo6019  
   2016-03-04 09:49:16 +08:00
好棒,自己摸索做了个 discuz 的自动签到,竟然真的成功了,还能从网页提取变量。。。好神奇。。。
micookie
    187
micookie  
   2016-04-09 11:01:06 +08:00
感谢。~
zhangfan
    188
zhangfan  
   2016-05-19 15:24:58 +08:00
战略 mark
feixiangdao
    189
feixiangdao  
   2016-05-23 22:17:14 +08:00
请教
./qiandao tpl.har --username=<username> --password=<password> [env.json]
最后的[env.json] 是指什么?
cookie 的命令行格式是什么?
什么值得买还能用吗?
binux
    190
binux  
OP
   2016-05-23 22:23:46 +08:00
@feixiangdao env.json 是可选的,格式为 dict ,内容和前面的参数一样
cookie 为 cookie string 形式,和 web 界面上插件获取的格式一样。
什么值得买应该不能用了
xzc0001
    191
xzc0001  
   2016-08-27 16:33:14 +08:00
不知道京东会员签到是谁维护的哦。现在贵站的京东会员签到已失效,自己尝试修改失败,似乎现在有一个 token ,不知道是如何获取的。
standin000
    192
standin000  
   2016-09-19 14:47:53 +08:00
楼主厉害,顶顶!
mkjszx
    193
mkjszx  
   2016-10-14 14:32:43 +08:00
自己能用空间搭建吗?如何搭建?来个教程吧。
ixinshang
    194
ixinshang  
   2016-10-22 20:54:31 +08:00
@hobo6019 请问能分享下吗
wujunze
    195
wujunze  
   2016-11-30 10:09:34 +08:00
wq2016
    196
wq2016  
   2016-12-23 00:06:21 +08:00
666
kookpua
    197
kookpua  
   2017-03-09 16:14:40 +08:00
字幕组和吾爱破解 获取不了 cookie 了呀
kookpua
    198
kookpua  
   2017-03-09 16:18:04 +08:00
哦 是我使用不当~应该要安装 cookie 获取助手后才能使用
chosen1st
    199
chosen1st  
   2017-07-21 15:15:44 +08:00
@binux 想请教一下 我想修复目前的 kindbook 网站的模板 因为这个网站从 http 切到 https 了 但是不知道如何在创建模板时利用 Cookies 获取助手来拿 cookie O(∩_∩)O 谢谢
binux
    200
binux  
OP
   2017-07-21 17:05:33 +08:00
@chosen1st 模板里面是 https 就可以了啊
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5536 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 41ms · UTC 01:41 · PVG 09:41 · LAX 18:41 · JFK 21:41
Developed with CodeLauncher
♥ Do have faith in what you're doing.