多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 用PHP模擬登錄WAP飛信實現飛信發送

用PHP模擬登錄WAP飛信實現飛信發送

來源:程序員人生   發布時間:2014-04-10 13:10:51 閱讀次數:3508次

目前網上有很多第三方的飛信接口。缺點是都不太穩定,很多到現在都失效無法使用了,另外我們還會擔心信息的外泄。其實我們可以自己動手實現一個這樣的一個接口,我這里給出的思路非常簡單:通過模擬登錄WAP版飛信,來實現發飛信等操作。選擇WAP飛信主要是因為其界面比較簡單,容易分析,并且沒有驗證碼。

1. 安裝Firefox插件wmlbrowser

這樣我們就能直接用Firefox瀏覽WAP網頁了,并且還可以利用Firebug對界面進行分析。下載地址:https://addons.mozilla.org/zh-CN/firefox/search/?q=wmlbrowser&cat=all&x=17&y=11

wmlbrowser

2. 登錄頁面的分析

WAP飛信入口為http://f.10086.cn/,點擊“暢聊WAP飛信”進入登錄頁面(http://f.10086.cn/im/login/login.action)。通過Firebug可以看出:

共有3個字段:pass(密碼)、loginstatus(登錄狀態)、m(手機號)
提交到的action:http://f.10086.cn/im/login/inputpasssubmit1.action

其實獲取表單提交的字段,這里有一種取巧的辦法:修改action,讓它指向自己的程序,如下圖:

分析WAP飛信登錄表單

我把action改為了本地的一個php程序,這個程序只是簡單的一句print_r($_POST),得到的結果為:

分析WAP飛信登錄表單

這些內容就是表單要提交的數據。

3. 用CURL實現模擬登錄操作

從上面的分析看,登錄時提交的內容還是比較簡單的,沒有驗證碼,也沒有防跨域提交的hash值的校驗。然后我們用CURL模擬提交這個登錄表單。其實就是發送了一個POST方式的HTTP請求,CURL可以把返回的Cookie保存成一個文件。之后的發送飛信等操作將會用到這個Cookie文件。

代碼如下:

$cookie = dirname(__FILE__).'/cookie.txt';$post = array(        'm' => '13700001234',        'pass' => '123456',        'loginstatus' => 1,);$curl = curl_init('http://f.10086.cn/im/login/inputpasssubmit1.action');curl_setopt($curl, CURLOPT_HEADER, 0);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); // 注意這里!保存Cookiecurl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));$result = curl_exec($curl);curl_close($curl);

是否登錄成功,可以判斷$result的值。

4. 攜帶Cookie,給自己發送飛信

給自己發飛信比給好友發相對簡單一些,有個專門的頁面??梢詮?ldquo;登錄后的首頁 => 資料 => 給自己發短信”進入,地址為:
http://f.10086.cn/im/user/sendMsgToMyself.action。

用上面同樣的方法分析表單:

只有一個字段:msg (短信內容)
提交到的action:http://f.10086.cn/im/user/sendMsgToMyselfs.action

利用CURL向這個URL發送POST方式的請求,并加上上面保存到的Cookie,下面是代碼:

$post = array(        'msg' => 'Hello Fetion',);$curl = curl_init('http://f.10086.cn/im/user/sendMsgToMyselfs.action');curl_setopt($curl, CURLOPT_HEADER, 0);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);        // 注意這里!curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));$result = curl_exec($curl);curl_close($curl);

根據返回的$result可以判斷出是否發送成功。

5. 給好友發送飛信之前,先獲得好友手機號對應的userid

因為給好友發送飛信的表單提交的是userid而不是手機號(這個表單的分析在下一步),所以我們必須想辦法找出手機號所對應的userid。我這里利用的是“搜索好友”的功能,就在飛信登錄后的首頁,如下圖:

搜索飛信好友

按手機號搜索可以得到一個唯一并準確的結果,然后我們再用正則把結果頁中的userid匹配出來。

首先分析這個表單:

發送的字段:searchText (只有一個)
提交到的action:http://f.10086.cn/im/index/searchOtherInfoList.action

用CURL模擬發送請求,代碼如下:

$post = array(        'searchText' => '18700008888',);$curl = curl_init('http://f.10086.cn/im/index/searchOtherInfoList.action');curl_setopt($curl, CURLOPT_HEADER, 0);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);        // 注意這里!curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));$result = curl_exec($curl);curl_close($curl);

用正則獲得結果中的userid:

preg_match('/toinputMsg.action?touserid=(d+)/si', $result, $matches);$userid = isset($matches[1]) ? $matches[1] : '';

這塊可以做一個當找不到userid時的提示。

6. 給好友發送飛信

給好友發飛信的界面,可以隨便點一個好友進入。表單HTML如下圖:

給好友發送飛信

分析這個表單:

提交的字段:backUrl、touchTitle、touchTextLength、msg
action:http://f.10086.cn/im/chat/sendMsg.action?touserid=上面取得的userid

代碼如下:

$post = array(        'msg' => 'Hello Fetion',);$curl = curl_init('http://f.10086.cn/im/chat/sendMsg.action?touserid='.$userid);         // 注意這里!curl_setopt($curl, CURLOPT_HEADER, 0);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);        // 注意這里!curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));$result = curl_exec($curl);curl_close($curl);

上面的$post只包含了一個字段,因為試驗的時候我發現其他字段不是必須的。可以根據返回的$result判斷發送成功與否。

7. 退出飛信

如果不退出的話,則登錄后的短時間內如果正好有人給你發飛信,就只能在WAP飛信上查看了,而不能自動發到你的手機上。退出的操作比較簡單,只是發送了一個GET方式的請求。“退出”的鏈接可以在登錄后首頁的右下角看到,如圖:

退出WAP飛信

代碼如下:

$curl = curl_init('http://f.10086.cn/im/index/logoutsubmit.action');curl_setopt($curl, CURLOPT_HEADER, 0);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);        // 注意這里!$result = curl_exec($curl);curl_close($curl);

8. 總結

通過對以上代碼的整理,可以做出一個飛信發送類。也可以做成一個飛信發送的服務,如簡單易用的HTTP方式的接口。飛信最大的好處就在于免費,并能實時將信息發送到手機上,可以做一些類似定時短信或監測提醒的功能。

我這里封裝成了一個PHP飛信類。

點擊下載:phpfetion v1.2.0 模擬登錄WAP飛信發送短信

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产一区二区精品久久91 | 久久er国产精品免费观看8 | 国产欧美一区二区三区精品 | 国内交换一区二区三区 | 黄色中文字幕在线观看 | 亚洲人成依人成综合网 | 一区二区三区在线播放 | 亚洲成人精品 | 国产一区二区免费播放 | 国产欧美国产精品第二区 | 久久精品一区二区三区不卡牛牛 | 亚洲综合二区 | 毛片毛片毛片 | 日本乱妇18日本乱妇18p | 欧美成人一级毛片 | 国产成人高清视频 | 毛片在线播放观看日本 | 国产精品99一区二区三区 | 亚洲经典一区 | 女人18特级一级毛片免费视频 | 亚欧成人 | 久久福利资源站免费观看i 久久高清一级毛片 | 欧美特级特黄a大片免费 | 国产麻豆视频在线观看 | 中文字幕一区二区三区在线观看 | 日韩一区精品 | 在线播放69热精品视频 | free俄罗斯性xxxxhd视频 | 偷窥自拍校园春色 | 性视频久久 | 国产日韩欧美一区二区三区视频 | 免费看h | 国产在线观看福利片 | 99精品国产高清一区二区 | 日本一区二区三区在线观看视频 | 精品国产区 | 欧美日韩一区视频 | 欧美黑人巨大videos极品视频 | 五月天综合在线 | 亚洲肥妇| 欧美精品福利 |