python飞信发短信接口实现

最近做了个乌云漏洞邮件推送,朋友想用短信实现,据现在了解乌云的漏洞,如果收短信的话,每天会收到不少短信,现在推送的邮件也只看看标题,有时候重要资料泄漏的时候,也可以去拿下重要资料,这个很重要哦。说不定以后一些数据会用得到,虽然一直没有用到过的,也没什么数据,今天主要是实现短信接口,不考虑花钱的了,有免费的为嘛不用,记得之前赶集网一直是用的飞信推送的消息,应该是可以利用飞信免费发短信的,其次就是139邮箱也可以短信邮件通知,之前记得用php做一个表单的时候用过139邮箱,限制了发送频率,而飞信没有限制,估计飞信的难度会比139邮箱低一些。决定研究飞信了,网上看了下飞信官方没有api,只有一些破解版的api,试了下破解版的都不生效了。估计是飞信为了不要他们这么做改版或做限制了。通过抓包分析仍然是很容易破解飞信短信接口的,更重要的是飞信在验证手机号的时候还有重放,这么大的一个产品应该完善的好一些吧。可以重放没关系,至少加个随机数,加个验证码,降低被恶意利用。
发短信的HTTP数据包如下:

“””
POST /WebIM/SendMsg.aspx?Version=12 HTTP/1.1
Host: webim.feixin.10086.cn
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: https://webim.feixin.10086.cn/main.aspx
Content-Length: 91
Cookie: WT_FPC=id=2fcb23760e2cd13e7331459683774250:lv=1459685850316:ss=1459683774250; CmLocation=100|100; CmProvid=bj; mobileNo1=eea9cd7d4a5fc1c3842c95b5597b5bcea80a0c8e@@fab16175347ef6cd6129d6075f9831033a6cd311@@1459683976386; VerificationCode=0e36621b8501448f9299ac8e4eba0c0e; IsCookiesEnable=true; webim_loginCounter=1461335530651; ccpsession=776e58ca-4056-49ef-aa3c-c934f8ef8e2e; webim_usersid=267905802; webim_userstatus=0; webim_login_status=1; webim_remindmsgs=267905802–0-d7b163171d6b447d9c507e24387900a5
Connection: keep-alive

To=1393465590&IsSendSms=1&Msg=111&ssid=952890508p30377-d7b16317-1d6b-447d-9c50-7e24387900a5
“””

下面用python模拟下:

# coding:utf-8
import requests,sys,random
#解决输出问题
reload(sys)
sys.setdefaultencoding( "utf-8" )
#设置头信息
headers={
"Host": "webim.feixin.10086.cn",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0",
"Accept": "application/json, text/javascript, */*; q=0.01",
"Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
"Accept-Encoding": "gzip, deflate, br",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With": "XMLHttpRequest",
"Referer": "https://webim.feixin.10086.cn/main.aspx",
"Content-Length": "91",
"Cookie": "WT_FPC=id=2fcb23760e2cd13e7331459683774250:lv=1459685850316:ss=1459683774250; CmLocation=100|100; CmProvid=bj; mobileNo1=eea9cd7d4a5fc1c3842c95b5597b5bcea80a0c8e@@fab16175347ef6cd6129d6075f9831033a6cd311@@1459683976386; VerificationCode=0e36621b8501448f9299ac8e4eba0c0e; IsCookiesEnable=true; webim_loginCounter=1461335530651; ccpsession=776e58ca-4056-49ef-aa3c-c934f8ef8e2e; webim_usersid=267905802; webim_userstatus=0; webim_login_status=1; webim_remindmsgs=267905802--0-d7b163171d6b447d9c507e24387900a5",
"Connection": "keep-alive",
}
#定义访问cookies实例
sid = requests.session()
api = "http://webim.feixin.10086.cn"
#tradeNo = random.randint(11,99)
#API 1
api_1 = api + "/WebIM/SendMsg.aspx?Version=12"
params_1 = {??????????? 'To':'1393465590', #发送人手机号ID
'IsSendSms':'1',
'Msg':'test', #发送的内容
'ssid':'952890508p30377-d7b16317-1d6b-447d-9c50-7e24387900a5',
#appId,key
}
test = requests.post(api_1,params_1,headers = headers)
print test.content

打印出成功响应:{“rc”:200}
预测,目前可能会存在cookies的有效期问题,要保持Cookies的有效时间,针对这个有两种解决方案:
1.如果飞信在服务端没有设置cookies的有效期,则是关闭浏览器后失效的,保持浏览器开着页面的状态就好了,如果做了有效期设置或者访问时效设置,做个客户端定时刷新页面就好了;
2.这个是登陆页面,https://webim.feixin.10086.cn/login.aspx,需要手机接受验证码,可以判断返回信息如果不是200,则去请求验证码,然后输入验证码再次提交保持cookies分析cookies发短信,虽然有点繁琐,但是这种方式能分析出原理。
 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.