PHP飞信发送短信 飞信群发短信 模仿登录WAP飞信实现群发短信

  今朝网上有许多第三方的飞信接口。缺点是都不太不变,许多到此刻都失效无法利用了,别的我们还会担忧信息的外泄。其实我们可以本身动手实现一个这样的一个接口,我这里给出的思路很是简朴:通过模仿登录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飞信进口为,点击“畅聊WAP飞信”进入登录页面()。通过Firebug可以看出:

共有3个字段:pass(暗码)、loginstatus(登录状态)、m(手机号)

提交到的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,给本身发送飞信

  给本身发飞信比给挚友发相对简朴一些,有个专门的页面。可以从“登录后的首页 => 资料 => 给本身发短信”进入,地点为:

  用上面同样的要领阐明表单:

只有一个字段:msg (短信内容)

提交到的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:

  用CURL模仿发送请求,代码如下:

$post = array(
    'searchText' => '18700008888',
);

$curl = curl_init('');
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时的提示。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/10678.html