用PHP模拟登录WAP飞信实现飞信发送_PHP教程
目前网上有很多第三方的飞信接口。缺点是都不太稳定,很多到现在都失效无法使用了,另外我们还会担心信息的外泄。其实我们可以自己动手实现一个这样的一个接口,我这里给出的思路非常简单:通过模拟登录WAP版飞信,来实现发飞信等操作。选择WAP飞信主要是因为其界面比较简单,容易分析,并且没有验证码。
1. 安装Firefox插件wmlbrowser
这样我们就能直接用Firefox浏览WAP网页了,并且还可以利用Firebug对界面进行分析。下载地址:https://addons.mozilla.org/zh-CN/firefox/search/?q=wmlbrowser&cat=all&x=17&y=11
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,让它指向自己的程序,如下图:
我把action改为了本地的一个php程序,这个程序只是简单的一句print_r($_POST),得到的结果为:
这些内容就是表单要提交的数据。
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); // 注意这里!保存Cookie curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post)); $result = curl_exec($curl); curl_close($curl);
是否登录成功,可以判断$result的值。
4. 携带Cookie,给自己发送飞信
给自己发飞信比给好友发相对简单一些,有个专门的页面。可以从“登录后的首页 => 资料 => 给自己发短信”进入,地址为:
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方式的请求。“退出”的链接可以在登录后首页的右下角看到,如图:
代码如下:
$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飞信发送短信

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas





PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Jika anda seorang pembangun PHP yang berpengalaman, anda mungkin merasakan bahawa anda telah berada di sana dan telah melakukannya. Anda telah membangunkan sejumlah besar aplikasi, menyahpenyahpepijat berjuta-juta baris kod dan mengubah suai sekumpulan skrip untuk mencapai op

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.
