这个页面已经不再维护更新了,你可以从这里了解最新的进展
一个练手的小脚本,暂时只是实现了签到,还没有很完备的错误处理,而且在实现“全自动签到”上还没有想出什么合理的方案,先把代码贴上现丑了……
使用方法很简单
|
1 |
python xiami_auto_checkin.py email password |
即把用户名(email)和密码作为参数传进去即可
如果你只是签固定的一个帐号,也可以直接将代码中的读参数改成赋值
这个代码只是最初的版本,你可以在这里看到最新的进展
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
#!/usr/bin/python
# encoding:utf-8
import re
import sys
import urllib
import urllib2
import cookielib
def check(response):
"""
docstring for check
"""
pattern = re.compile(r'<div class="idh">(已连续签到\d+天)</div>')
result = pattern.search(response)
if result: return result.group(1)
return False
pass
def main():
"""
docstring for main
"""
# Get email and password
if len(sys.argv) != 3:
print '[Error] Please input email & password as sys.argv!'
return
email = sys.argv[1]
password = sys.argv[2]
# Init
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))
urllib2.install_opener(opener)
# Login
login_url = 'http://www.xiami.com/web/login'
login_data = urllib.urlencode({'email':email, 'password':password, 'LoginButton':'登陆',})
login_headers = {'Referer':'http://www.xiami.com/web/login', 'User-Agent':'Opera/9.60',}
login_request = urllib2.Request(login_url, login_data, login_headers)
login_response = urllib2.urlopen(login_request).read()
# Checkin
checkin_pattern = re.compile(r'<a class="check_in" href="(.*?)">')
checkin_result = checkin_pattern.search(login_response)
if not checkin_result:
# Checkin Already | Login Failed
result = check(login_response)
if result :
print '[Succeed] Checkin Already!', email, result
else:
print '[Error] Login Failed!'
return
checkin_url = 'http://www.xiami.com' + checkin_result.group(1)
checkin_headers = {'Referer':'http://www.xiami.com/web', 'User-Agent':'Opera/9.60',}
checkin_request = urllib2.Request(checkin_url, None, checkin_headers)
checkin_response = urllib2.urlopen(checkin_request).read()
# Result
result = check(checkin_response)
if result:
print '[Succeed] Checkin Succeed!', email, result
else:
print '[Error] Checkin Failed!'
pass
if __name__=='__main__':
main() |
有任何问题,欢迎批评指正,更多更新信息,请参见这里
如果要验证码呢?
@Francis Chen 那样的话,应该就只能找其他hack的方法了~
D:\>cd xiami
D:\xiami>xiami_auto_checkin.py ******* ********
Traceback (most recent call last):
File “D:\xiami\xiami_auto_checkin.py”, line 20, in
import urllib2
ImportError: No module named urllib2
对于没用过python的我来说,真是头晕。
@sara 可以看一下你装的python版本么?我怀疑你是安装了python3而不是python2
这个可以扩展到115网盘领取空间。。。
@艳文 我最近正准备hack一个呢,不过115的那个有点复杂,虾米的手机版,所以比较方便
博主你好,提个建议,建议你将这个Python程序与Google app engine结合起来,实现无需打开电脑即可自动签到
@Pan 非常感谢你的建议,现在我是通过在自己的VPS上用cron job实现不需要开电脑就可以自动签到的,目前已经顺利运行118天了,主要是GAE和SAE都没用过,有时间我会尝试的。我还计划可以写一个web端来自动在VPS上创建cron job,那样的问题就是需要使用者提供帐号和密码,关于这个想法也希望能听听你的意见。
如果使用gae的话可能更好一些,gae使用人数现在不少,很多人都知道怎么创建和上传gae应用
@pan 很感谢你的建议,我会抽时间折腾一下GAE的,感谢关注。