当今是移动APP的天下,很多APP软件为了吸引客户每天登录使用,设置的有每天签到送一些奖励的活动。这里以一个挺火的网络电话软件呼应(每天签到送长)为例,通过python 实现自动签到。

一、Fiddler 抓包

Fiddler不但能截获各种浏览器发出的HTTP请求, 也可以截获各种智能手机发出的HTTP/HTTPS请求。Fiddler能捕获IOS设备发出的请求,比如IPhone, IPad, MacBook. 等等苹果的设备。 同理,也可以截获Andriod,Windows Phone的等设备发出的HTTP/HTTPS数据包。

前提条件是:安装Fiddler的机器,跟手机在同一个网段 (这个还不简单,一个无线路由器搞定)。

1、Fiddler 配置

fiddler安装完成后,需要进行如下步骤进行配置 ,点击:Tools->Fiddler Options 分别在https和connections项的相应块勾选:

2、手机端配置

这里假设安装fiddler 软件的PC机IP为192.168.1.104 ,使用手机浏览器打开http://192.168.1.104:8888 , 点"FiddlerRoot certificate" 然后安装证书 。安装完成后,在手机的网络连接里找到代理设置项,将代理IP设为192.168.1.104 ,端口为8888 。这里以IOS手机为例:

3、抓包与过滤

此时访问手机APP上的应用或者通过手机打开页面都可以在PC fiddler上查看到相应的包,而且可以在fiddler上对抓到的包进行过滤,只取我们想要的包:

二、呼应自动签到

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串

返回信息:

1

用户ID

呼应号

手机号

1

1nsye8

at串

864000

登录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 + ' ' + '目前免费时长:' + longtime + ' ' + '本月签到日期:' + signdate + ' ' + '连续签到天数:' + 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变更,签到失败等情况时,可以二次分析包,进行软件更新。

写在最后:由于呼应的URL包还是比较简单的,比如企鹅的微信、QQ消息包是涉及到内容加密的,想要实现对其某些功能的自动完成,就没有这么简单了。

python脚本实例手机端-手机APP自动签到-python实现 - 运维之路相关推荐

  1. python脚本实例手机端-python链接手机用Python实现命令行闹钟脚本实例

    前言: 这篇文章给大家介绍了怎样用python创建一个简单的报警,它可以运行在命令行终端,它需要分钟做为命令行参数,在这个分钟后会打印"wake-up"消息,并响铃报警,你可以用0 ...

  2. python脚本实例手机端-终于晓得python入门脚本实例

    Python面向对象跟Java的面向对象大同小异,这篇我们简单介绍一下Python面向对象.以下是小编为你整理的python入门脚本实例 类(class)是通俗的说就是事物的属性和行为的抽象.下面我们 ...

  3. python脚本实例手机端-用Python实现自动化操作Android手机

    本文原创作者:鲲之鹏(http://www.site-digger.com) 本文原始链接:http://www.site-digger.com/html/articles/20180912/664. ...

  4. python脚本实例手机端-python调用adb脚本来实现群控安卓手机初探

    [Python] 纯文本查看 复制代码# !/usr/bin/python # -*- coding:utf-8 -*- import os runapp_name = "com.tence ...

  5. python脚本实例手机端-Python脚本实现自动化Android手机apk安装实例

    #引入模块 importglobimporttimeimportos#定义全局变量 devices_list_finally =[] file_list_finally=[] chose_file_n ...

  6. 如何将Python脚本转换为exe,双击exe自动执行Python脚本功能

    前言 本文是该专栏的第8篇,后面会持续分享python的各种干货知识,值得关注. 相信很多同学在工作上,或多或少遇到过这样的需求,如下: 需要你使用python开发一个功能(如爬虫,或者数据分析,又或 ...

  7. win7运行python脚本_windows7设置开机启动项自动启python脚本

    windows7设置开机启动项自动启python脚本 windows7左下角搜索框输入shell:startup 会出现一个文件夹,开机的时候windows7会自动打开里面的文件 1.可以把pytho ...

  8. python实现app自动签到器_利用Python实现App自动签到领取积分

    要自动签到,最简单的是打开页面分析请求,然后我们用脚本实现请求的自动化.但是发现食行没有页面,只有 APP,这不是一个好消息,这意味着需要抓包处理了. 有需要Python学习资料的小伙伴吗?小编整理[ ...

  9. 手机端(APP点灯blinker)-PC端(Node-red)-设备端(ESP32)-客户端(MQTTX客户端)四者之间的通信——通过MQTT通信(上)

    手机端(APP点灯blinker)-PC端(Node-red)-设备端(ESP32)-客户端(MQTTX客户端)四者之间的通信--通过MQTT通信(上) 前言: 本次实验是通过MQTT来进行手机端-设 ...

最新文章

  1. tf.keras.activations.softmax 激活函数 示例
  2. java生成横向的pdf,java – 如何生成横向跨越多个页面的PDF报告
  3. Python的第二种数据类型——String(字符串)
  4. 牛逼!Python常用数据类型的基本操作(长文系列第一篇)
  5. sql update 多个字段_SQL学习之路-20190707
  6. Javascript实现鼠标框选元素后拖拽被框选的元素
  7. UltraEdit v17.10.0,注册机,注册码
  8. Cuba 设置debug模式
  9. MOGRE学习笔记(2) - MOGRE基础知识总结
  10. pwm电机调速的原理介绍与代码实现
  11. 自媒体常用小程序:去水印、配音、文案提取
  12. 使用扫码枪(二维码,条码)使用键盘钩子获取扫码数据
  13. 解析HTTPS加密原理
  14. 写在前面-数据结构与算法分析
  15. Unity 获取鼠标点击图片时 获取点击位置的像素
  16. 国际网页短信后台定制源码搭建软件平台定制-移讯云短信系统
  17. 网络创业者之家:在家就能做的兼职项目推荐
  18. 点击键盘的return键收回键盘
  19. 推荐算法遇到后悔药:评蚂蚁的ESCM2模型
  20. QE01/QE02/QE03屏幕增强

热门文章

  1. 网络安全中机器学习大合集 Awesome
  2. 一种神经元探索系统方法及装置
  3. python 文章词数统计
  4. Java --Lamda表达式
  5. 浮点数存储格式学习:找到非规格数中最大和最小的数
  6. Query Specific Fusion for Image Retrival 学习日常
  7. ZH奶酪:Java调用NLPIR汉语分词系统
  8. error: No resource identifier found for attribute ‘backIcon’ in package
  9. JavaScript验证时间格式
  10. silverlight, 双击事件