現在、インターネット上にはサードパーティ製の Fetion インターフェイスが多数存在します。デメリットとしては安定性が低く、現在では無効になっているものも多く、また情報漏洩も心配です。実際、このようなインターフェイスは自分で実装できます。ここで示すアイデアは非常にシンプルです。Fetion の WAP バージョンへのログインをシミュレートすることで、Fetion やその他の操作を送信できます。 WAP Fetion を選択した主な理由は、インターフェイスが比較的シンプルで分析しやすく、検証コードがないためです。
1.FirefoxプラグインPHP を使用して WAP Fetion へのログインをシミュレートし、Fetion_PHP チュートリアルを送信しますをインストールします
このようにして、Firefox を直接使用して WAP Web ページを閲覧したり、Firebug を使用してインターフェイスを分析したりすることもできます。ダウンロードアドレス: https://addons.mozilla.org/zh-CN/firefox/search/?q=PHP を使用して WAP Fetion へのログインをシミュレートし、Fetion_PHP チュートリアルを送信します&cat=all&x=17&y=11
2. ログインページの分析
WAP Fetionの入り口はhttp://f.10086.cn/で、「Chat WAP Fetion」をクリックしてログインページ(http://f.10086.cn/im/login/login.action)に入ります。 Firebug を通して見ることができます:
3つのフィールドがあります: pass (パスワード)、loginstatus (ログインステータス)、m (携帯電話番号)
送信されたアクション: http://f.10086.cn/im/login/inputpasssubmit1.action
実際には、フォームによって送信されたフィールドを取得するためのトリックがあります。以下に示すように、独自のプログラムを指すようにアクションを変更します。
アクションをローカルの PHP プログラムに変更しました。このプログラムは単なる print_r($_POST) であり、結果は次のようになります。
この内容はフォームで送信するデータです。
3. CURL を使用してログイン操作をシミュレートします
上記の分析から、ログイン時に送信されるコンテンツは比較的単純であり、クロスドメイン送信を防ぐための検証コードやハッシュ値の検証はありません。次に、CURL を使用してログイン フォームの送信をシミュレートします。実際、POST HTTP リクエストが送信され、CURL は返された Cookie をファイルに保存できます。この Cookie ファイルは、Fetion の送信などの後続の操作で使用されます。
コードは次のとおりです:
リーリーログインが成功したかどうかで、$result の値を決定できます。
4. クッキーを持ってきて自分にフェションを送りましょう
フェションを自分に送るのは、友達に送るよりも比較的簡単です。専用のページがあります。 「ログイン後のホームページ => 情報 => 自分にテキスト メッセージを送信」から入ることができ、アドレスは
http://f.10086.cn/im/user/sendMsgToMyself.action です。
上記と同じ方法を使用してフォームを分析します:
フィールドは 1 つだけ: msg (テキスト メッセージの内容)
送信されたアクション: http://f.10086.cn/im/user/sendMsgToMyselfs.action返された $result に基づいて送信が成功したかどうかを判断できます。CURL を使用してこの URL に POST リクエストを送信し、上記で保存した Cookie を追加します。コードは次のとおりです。 リーリー
5. Fetionを友達に送る前に、まず友達の携帯電話番号に対応するユーザーIDを取得してください
Fetion を友達に送信するためのフォームは携帯電話番号の代わりにユーザー ID を送信するため (このフォームの分析は次のステップで行います)、携帯電話番号に対応するユーザー ID を見つける方法を見つける必要があります。ここで使用しているのは、以下に示すように、Fetion にログインした後のホームページにある「友達を検索」機能です。
携帯電話番号で検索すると、一意で正確な結果が得られます。その後、正規表現を使用して結果ページのユーザー ID と照合します。
まずこのフォームを分析します:
送信フィールド: searchText (1 つだけ)
アクションの送信先: http://f.10086.cn/im/index/searchOtherInfoList.action
リーリーCURL を使用してリクエストの送信をシミュレートします。コードは次のとおりです:
正規表現を使用して結果のユーザーIDを取得します:
リーリー
このブロックは、ユーザー ID が見つからない場合にプロンプトを表示するために使用できます。
6. 友達にフェションを送る
Fetion メッセージを友達に送信するためのインターフェース。友達をクリックして入力できます。フォームのHTMLは以下の通りです:
このフォームを分析します:
送信フィールド: backUrl、touchTitle、touchTextLength、msg
action: http://f.10086.cn/im/chat/sendMsg.action?touserid=上記で取得したユーザーID
コードは次のとおりです:
実験中に他のフィールドは必要ないことが判明したため、上記の $post にはフィールドが 1 つだけ含まれています。返された$resultによって送信が成功したかどうかを判断できます。
リーリー
7. フェションを出る
如果不退出的话,则登录后的短时间内如果正好有人给你发飞信,就只能在WAP飞信上查看了,而不能自动发到你的手机上。退出的操作比较简单,只是发送了一个GET方式的请求。“退出”的链接可以在登录后首页的右下角看到,如图:
代码如下:
$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飞信发送短信