[文章作者:张宴 本文版本:v1.1 最后修改:2010.08.03 转载请注明原文链接:http://blog.zyan.cc/fetion_api/]

  备注:2010年7月底移动飞信修改协议,造成影响的 sms.api.bz 免费发送短信API接口,已于2010年8月3日19:00恢复正常。

  飞信是由中国移动通信集团公司推出的一款集商务应用和娱乐功能为一体的,基于手机应用以及与Internet深度互通的即时通讯产品,可免费给好友发送短信。

  1、下载中国移动飞信PC客户端软件(http://www.fetion.com.cn/downloads/pc.aspx),并注册开通飞信。注册成为飞信用户,下载飞信PC客户端、使用PC客户端基本功能,不收取费用。
  2、通过PC客户端,邀请并添加免费短信接收方的手机号码(仅限中国移动)到您的飞信好友,该手机号需要通过通过PC客户端、或回复短信接受您的邀请;
  3、通过 http://sms.api.bz/ 提供的 API 接口,即可免费给飞信好友或给你自己的手机发短信。利用本API接口可进行日程提醒、服务器监控、报警、故障通知或短信自动控制等功能。



  飞信免费发短信API接口在线演示页面:

  http://sms.api.bz/

  https://sms.api.bz/ (HTTPS加密接口)



  飞信免费发短信API接口调用方式(通过HTTP访问以下网址、支持GET和POST):
http://sms.api.bz/fetion.php?username=您的移动飞信登录手机号&password=您的移动飞信登录密码&sendto=接收短信的飞信好友手机号(也可以是你自己的手机号)&message=短信内容

  注:短信内容最大长度为180个汉字,超过180个汉字不发送。返回的信息为UTF-8编码的中文文本信息。



  2009年5月28日新增:飞信免费发短信API接口调用方式(通过HTTPS加密隧道访问以下网址、支持GET和POST,进一步保证您的密码安全):
https://sms.api.bz/fetion.php?username=您的移动飞信登录手机号&password=您的移动飞信登录密码&sendto=接收短信的飞信好友手机号(也可以是你自己的手机号)&message=短信内容

  注:短信内容最大长度为180个汉字,超过180个汉字不发送。返回的信息为UTF-8编码的中文文本信息。

  点击在新窗口中浏览此图片



  例1:在Linux命令行下通过curl命令给自己的手机号(假设为13800138000)发送短信(HTTP GET 方式)
curl "http://sms.api.bz/fetion.php?username=13800138000&password=123456&sendto=13800138000&message=短信内容"


  例2:在PHP5中通过file_get_contents函数发送短信(HTTP GET 方式)


  例3:在PHP中通过curl发送短信(HTTP POST 方式)

  备注:9日移动飞信升级造成影响的 sms.api.bz 免费发送短信API接口,已于2009年12月14日恢复正常。
  2009年12月9日中国移动飞信服务器升级,变更了登录地址和部分协议。升级后的协议无法直接给接收方手机号(tel)发送短信,只能给飞信号(sip uri)、自己的手机号发送短信。本人通过重新抓包,对飞信协议进行分析,修改了sms.api.bz接口代码,通过将接收方手机号(tel)转换为user-id,再通过user-id转换为飞信号(sip uri),进行短信发送,一切OK。






技术大类 » 其他Unix技术 | 评论(298) | 引用(0) | 阅读(412246)
1oki
2009-3-22 18:17
这个东西不错!
renothing
2009-3-22 21:32
我有API的源代码
LBJ
2009-3-23 02:41
涉及到用户飞信密码隐私是个问题,要是能把fetion.php这个文件开源给大家看看就好了grin
张宴 Email Homepage
2009-3-23 09:31
sms.api.bz只提供以队列方式发送短信的API接口,不会存储飞信密码,就像开心网、校内网导入MSN、QQ联系人时需要MSN、QQ密码一样。

飞信密码与其他密码不同,只要手机是你自己的,就算密码被盗,也可以通过手机短信进行密码重置。可以通过2008版飞信PC客户端登录界面的“设置密码”按照提示进行密码重置操作,也可以通过手机短信编辑6-16位非中文字符、全角字符到12520050做密码重置。

2008版飞信PC客户端重置密码界面见下图:

点击在新窗口中浏览此图片
http://blog.s135.com/attachment/200903/fetion_mm.png
imfantasy
2009-3-23 11:04
这个是不是一定要是自己的飞信好友才可以发?


如果我自己的论坛想要 给会员注册的时候 发一个验证码。  不是我的飞信好友,能发吗?  貌似不行!


还有就是, 如何避免别人那你这个东西,传播反社会的东西呢?

移动真的不收费吗?   如果我拿你这个API一天发一万个短信, 也免费?
张宴 回复于 2009-3-23 11:21
只能给飞信好友发短信,而且必须是双方都加为好友。加对方为好友,而对方未同意、或未处理,都是不能发的。所以信息只能在你和你的好友之间传播。

飞信的官方网站有短信免费的明确介绍:
http://www.fetion.com.cn/aboutus.aspx
飞信不但可以免费从PC给手机发短信,而且不受任何限制。
plantegg
2009-3-23 15:01
这个底层实现代码是调用的Lib Fetion的吗? 谢谢
游客
2009-3-23 15:52
估计是用的libfetion的代码。我自己也曾弄了一个这样的服务。
动漫驿站 Homepage
2009-3-24 08:32
这个好 以后就这么搞
游客
2009-3-24 18:32
貌似这接口今天不灵了,今天发出去一条后,就再也发不出去了
xiu
2009-3-25 10:30
老大!怎么喜欢飞信!要是能做个自动添加好友的飞信机器人就好了!
shunz Homepage
2009-3-26 09:45
什么地方少了东西?
提示:
错误。每一项必须填写。
z0800
2009-3-26 11:20
是个好东西,如果兼容性能发挥出来之后,我想以后管理服务器会更方便一些了。爽,有空测试一下。
唐朝宰相 Homepage
2009-3-26 14:48
貌似直接把密码和用户名发送到url,传递给这个网站,这个网站就等着收密码?感觉不是很可靠啊!再说了,飞信发送信息的延迟有时候几个小时,受不了!
ptubuntu Email Homepage
2009-3-27 00:31
现在越来越多的程序都公开API端口让更多的人来做相关的动做.
ANY
2009-3-27 15:57
ooxx Homepage
2009-3-28 23:20
我靠!  楼主是个技术牛人!!!
Ophone Email Homepage
2009-3-30 14:53
需要加好友才能发,不太实用
babam
2009-3-31 10:03
CInternetSession session("My Session");
  CHttpConnection* pServer = NULL;
  CHttpFile* pFile = NULL;
  CString url;
  url.Format("/fetion.php?username=%s&password=%s&sendto=%s&message=%s",usrname,pwd,recvusr,message);
  DWORD dwRet;
  char szBuff[1024]={0};
  try
  {
    CString strServerName;
    //INTERNET_PORT nPort;
    
    pServer = session.GetHttpConnection("http://sms.api.bz", INTERNET_PORT(80));
    pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET, url);
    
    pFile->AddRequestHeaders("Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*");
    pFile->AddRequestHeaders("Referer: http://sms.api.bz");
    pFile->AddRequestHeaders("Accept-Language: zh-cn");
    pFile->AddRequestHeaders("Content-Type: multipart/form-data; boundary=---------------------------7d11dc24268052c");
    pFile->AddRequestHeaders("Accept-Encoding: gzip, deflate");
    pFile->AddRequestHeaders("User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
    pFile->AddRequestHeaders("Content-Length: 1351");
    pFile->AddRequestHeaders("Connection: Keep-Alive");
    pFile->AddRequestHeaders("Cache-Control: no-cache");

    //pFile->AddRequestHeaders(szHeaders);
    pFile->SendRequest();
    pFile->QueryInfoStatusCode(dwRet);
    
    if (dwRet == HTTP_STATUS_OK)
    {
      UINT nRead = pFile->Read(szBuff, 1023);
    }
    delete pFile;
    delete pServer;
  }
  catch (CInternetException* e)
  {
    char buf[MAX_PATH];
    e->GetErrorMessage(buf,MAX_PATH,NULL);
    MessageBox(NULL,buf,"错误",MB_OK);
    return 0;
  }
  session.Close();

//发不出去。郁闷 返回的是
<!--
此文件用于由lighttpd或nginx转发过来的请求
-->
babam
2009-3-31 10:45
问题解决了。
CString strSentence, strWriteName;
  strWriteName.Format("username=%s&password=%s&sendto=%s&message=%s",usrname,pwd,recvusr,message);
    CString strFileName="http://sms.api.bz/fetion.php?" + strWriteName;
  
    CInternetSession sess;
    CHttpFile* fileGet;
    try
    {
        fileGet=(CHttpFile*)sess.OpenURL(strFileName);
    }
    catch(CException* e)
    {
        fileGet = 0;
        throw;
    }
  
    if(fileGet)
    {
        DWORD dwStatus;
        DWORD dwBuffLen = sizeof(dwStatus);
        BOOL bSuccess = fileGet->QueryInfo(HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, &dwStatus, &dwBuffLen);
    
        if( bSuccess && dwStatus>= 200&& dwStatus<300 )
        {
            CStdioFile fileWrite;
            if(fileWrite.Open(strWriteName, CFile::modeWrite|CFile::modeCreate))
            {
                while(fileGet->ReadString(strSentence))
                {
                    fileWrite.WriteString(strSentence+"\n");
                }
                fileWrite.Close();
                AfxMessageBox("下载完毕");
            }
            else
            {
                AfxMessageBox("本地文件"+strWriteName+"打开出错.");
            }
        }
        else
        {
            strSentence.Format("打开网页文件出错,错误码:%d", dwStatus);
            AfxMessageBox(strSentence);
        }
        fileGet->Close();
        delete fileGet;
    }
    else
        AfxMessageBox("不能找到网页文件!");
  
    sess.Close();
希望杯 Homepage
2009-3-31 11:23
好佩服.
分页: 1/15 第一页 1 2 3 4 5 6 7 8 9 10 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]