最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
python实现手机APP自动签到
时间:2015-08-14 编辑:简简单单 来源:一聚教程网
二、呼应自动签到
1、包分析
过抓包分析,我们获取了四个URL (登录、签到、签到信息、时长信息),这个四个URL都是通近GET方法进行请求,四个URL请求后返回的都是XML格式 。
登录URL:
http://pes.huying-network.com:9999/httpservice?cmd=getuserinfo&name=手机号&password=密码串%3D&appid=5&v=2.0.0.800&sign=sign串
返回信息:
登录URL通过请求后,返回以上信息,其中比较有用的是 at字符串 ,后面的三个URL请求时会用到。
# 签到实现
http://pes.huyingdianhua.com:9999/httpservice?cmd=givegift&uid=用户ID&type=4&subtype=12&at=at串3D&v=2.0.0.800&sign=sign串
# 签到信息
http://pes.huyingdianhua.com:9999/httpservice?cmd=getusertaskdetail&uid=用户ID&type=4&subtype=12&at=at串%3D&v=2.0.0.800&sign=sign串
# 时长信息
http://pes.huyingdianhua.com:9999/httpservice?cmd=getusertimer&uid=用户ID&at=at串3D&v=2.0.0.800&sign=sign串
2、自签到代码
这里要实现的功能是,自动签到后,通过 xml 解析取得相关信息,并通过邮件进行通知确认:
#!/usr/bin/python
#coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import pycurl,StringIO
import smtplib
from email.mime.text import MIMEText
def CurlGet(url):
c = pycurl.Curl()
c.setopt(pycurl.FOLLOWLOCATION, 1) #允许跟踪来源
c.setopt(pycurl.MAXREDIRS, 5)
c.setopt(pycurl.CONNECTTIMEOUT, 8)
head = ['Accept-Encoding: gzip'
'User-Agent: 呼应 2.0.0 rv:2.0.0.2 (iPhone; iPhone OS 8.4; zh_CN)']
buf = StringIO.StringIO()
c.setopt(pycurl.WRITEFUNCTION, buf.write)
c.setopt(pycurl.URL, url)
c.setopt(pycurl.HTTPHEADER, head)
c.perform()
the_page =buf.getvalue()
buf.close()
return the_page
def send_mail(to_list,sub,content):
me="huying"+"<"+mail_user+"@"+mail_postfix+">"
msg = MIMEText(content,_subtype='plain',_charset='utf-8')
msg['Subject'] = sub
msg['From'] = me
msg['To'] = ";".join(to_list)
try:
server = smtplib.SMTP()
server.connect(mail_host)
server.login(mail_user,mail_pass)
server.sendmail(me, to_list, msg.as_string())
server.close()
return True
except Exception, e:
print str(e)
return False
logintxt = CurlGet('http://pes.huying-network.com:9999/httpservice?cmd=getuserinfo&name=手机号&password=密码串%3D&appid=5&v=2.0.0.800&sign=sign串')
getgift = CurlGet('http://pes.huyingdianhua.com:9999/httpservice?cmd=givegift&uid=用户ID&type=4&subtype=12&at=at串3D&v=2.0.0.800&sign=sign串')
getdetail = CurlGet('http://pes.huyingdianhua.com:9999/httpservice?cmd=getusertaskdetail&uid=用户ID&type=4&subtype=12&at=at串%3D&v=2.0.0.800&sign=sign串')
gettime = CurlGet('http://pes.huyingdianhua.com:9999/httpservice?cmd=getusertimer&uid=用户ID&at=at串3D&v=2.0.0.800&sign=sign串')
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
login = ET.fromstring(logintxt)
detail = ET.fromstring(getdetail)
freetime = ET.fromstring(gettime)
login_at = login.find('at').text
longtime = freetime.find('freethreshold').text
signdate = detail.find('signdate').text
signday = detail.find('signday').text
msg = '登录字符串:' + login_at + '\n' + '目前免费时长:' + longtime + '\n' + '本月签到日期:' + signdate + '\n' + '连续签到天数:' + signday
if __name__ == '__main__':
mailto_list=['邮件接收人']
mail_host="smtp.163.com" #设置服务器
mail_user="username" #用户名
mail_pass="password" #口令
mail_postfix="163.com" #发件箱的后缀
if send_mail(mailto_list,"呼应自动签到",msg):
print "发送成功"
else:
print "发送失败"
由于at串的过其日志是10天,这里出于研究目的,并未对at串进行变量替换,具体使用时,还需要对at串信息进行替换。
3、效果
最终邮件收到的效果如下 ,通过邮件发送的另一个目的是,便于在软件版本更新,URL变更,签到失败等情况时,可以二次分析包,进行软件更新。
-
下一个: PHP 7新特性介绍详解介绍
相关文章
- 手机怎么会自动重启 07-03
- 手机自动拨打电话的解决办法 11-03
- 安卓手机锁屏后自动断开无络网络怎么办 04-06
- 安卓手机实现短信自动回复 09-22
- PHP导出数据超时的优化建议解读 10-31
- PHP之mysql位运算解析 10-31