PHP中CURL技术模拟登陆抓取网站信息,用与微信公众平台成绩查询

2019-03-02 00:44|来源: 网路

伴随微信的红火,微信公众平台成为许多开发者的下一个目标。笔者本身对于这种新鲜事物没有如此多的吸引力。但是最近有朋友帮忙开发微信公众平台中一个成绩查询的功能。于是便在空余时间研究了一番。

  主要的实现步骤是,通过PHP的CURL技术模拟登陆目标网站,通过登陆的用户,获取到用户的成绩信息,使用正则表达式对数据进行抓取和存储,使用HTML技术对数据进行重新弄排版。

  微信公众平台的功能就是通过浏览的目的来实现成绩查询。整体的技术实现就在于PHP的CURL技术。下面就随便找了一个文件,获取成绩。具体代码如下。

  


<HTML>
<HEAD><TITLE>请您登录</TITLE>
<script language="JavaScript">
function Judge()
    {
    var WebUserNO=document.all["WebUserNO"].value;
    if(WebUserNO=="")
       {alert("登录用户不能为空!");
       document.all["WebUserNO"] .focus();
       return false;
       }
    
}
</script>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TD {
    FONT-SIZE: 12px
}
p1 {
    FONT-SIZE: 12px
}
INPUT {
    FONT-SIZE: 12px
}
p2 {
    FONT-SIZE: 12px; LINE-HEIGHT: 14pt
}
p3 {
    FONT-SIZE: 14px
}
p4 {
    FONT-SIZE: 14px; LINE-HEIGHT: 14pt
}
p5 {
    FONT-SIZE: 16px
}
p6 {
    FONT-SIZE: 14px; LINE-HEIGHT: 180%
}
p7 {
    FONT-SIZE: 12px; COLOR: #136792; LINE-HEIGHT: 160%
}
BIG {
    FONT-SIZE: 18px
}
A:link {
    COLOR: #0000ff
}
A:visited {
    COLOR: #0000ff
}
A:hover {
    COLOR: #ff0000
}
hand {
    CURSOR: hand; BACKGROUND-COLOR: rgb(208,207,192)
}
</STYLE>
<!--style end-->
<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff topMargin=7 marginheight="0" marginwidth="25">
<form name="LoginForm" method="post" action="qing.php">
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR>
    <TD bgColor=#e6e6e6 height=20></TD>
      <TD align=right bgColor=#e6e6e6>&nbsp;</TD>
    </TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=1 width=492 align=center border=0>
  <TBODY>
  <TR>
    <TD>
      <TABLE borderColor=#c1eaff cellSpacing=0 cellPadding=20 width=474 
      align=center border=1>
        <TBODY>
        <TR>
          <TD><TABLE width=283 height="100" 
              border=0 align=center cellPadding=0 cellSpacing=0>
                                   <tr>
                      <td width="50" rowspan="4">&nbsp;</td>
                    <td align="left">
                      </td>
                      </tr>
                                   <tr>
                                     <td height="22" align="left">用户名:
                                     <input name="WebUserNO" type="text" id="WebUserNO" size="12"></td>
                                   </tr>
                                   <tr>
                                     <td height="22" align="left">&nbsp;&nbsp;码:
                                     <input name="Password" type="password" id="Password" size="12"></td>
                                   </tr>
                                   <tr>
                                     <td height="22" align="left" valign="middle"><p>附加码:
                                     <input name="Agnomen" type="text" id="Agnomen" size="12">
                                     </p>
                                     <p><A href="User_JSP/FuJiaMa.htm" target="_blank" ><img src="http://218.61.108.163/ACTIONVALIDATERANDOMPICTURE.APPPROCESS" width="60" height="20" alt="验证码说明" border="0"></a></p></td>
                                   </tr>
                  <tr align="center"> 
                    <td colspan="2"><input type="image" border="0" name="submit" src="http://218.61.108.163/User_JSP/images/Logon.gif" width="37" height="18" onClick="javascript:return Judge();">
                    
                    </td>
                </tr>    
                  <tr> 
                    <td colspan="2"><div align="center"><input name="applicant" type="hidden" value="ACTIONQUERYSTUDENTSCORE"></div></td>
                </tr>    
                </TABLE>
            <br>
          </TD>
        </TR>
        </TABLE></TD></TR></TBODY></TABLE>
</form>        
<BR>
<BR>
</BODY></HTML>


qing.php

<?php
    $cookie_file = tempnam('./temp','cookie');
    $login_url = 'http://218.61.108.163/ACTIONQUERYSTUDENTSCORE.APPPROCESS';
    
    $post_fields = 'WebUserNO=stuid&Password=passwd&Agnomen=code&applicant=ACTIONQUERYGRADUATESCHOOLREPORTBYSELF';
    
    $ch = curl_init($login_url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
    curl_exec($ch);
    curl_close($ch);
    
    $url='http://218.61.108.163/ACTIONQUERYGRADUATESCHOOLREPORTBYSELF.APPPROCESS';
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
    $contents = curl_exec($ch);
    
    //正则表达式提取数据。
    $match="|(<=<td>).*(?=</td>)|";
    preg_match_all($match,$contents,$b);
    $abc = $b[0];
    $abs = $b[1];
    $abd = $b[1];
    echo $abc;
    echo $abs;
    echo $abd;
    curl_close($ch);
?>


获取到成绩的界面

 


转自:http://www.cnblogs.com/ZM-Rid/p/3601513

相关问答

更多
  • 微信官网登陆[2022-06-03]

    1、首先需要打开网页版微信官方网址:https://wx.qq.com/,会出现以下这个网页版微信二维码;   2、然后打开手机微信,开启二维码扫描(这个功能在微信界面的“朋友们---添加朋友---扫一扫”);   3、扫描网页版微信二维码,这个二维码只有在https://wx.qq.com/网页上扫描才有用,扫描成功后网页上会出现ok,手机上会有确认信息,需要手动确定;   4、在手机客户端点击确认后,在手机微信里会显示出正在使用微信网页版字样;   5、直接点击确认网页版正常登陆而且无须输入账号密码。
  • 目前微信并没有电脑端强制手机端下线的功能。 只能手机先扫码登录电脑端,手机端再自己退出。
  • 先用抓包软件抓下登录时的数据包,然后 分析他用的是什么协议,然后 根据他的协议来写自己的程序,不过这个是一个比较大的工作量大事。不比抢票软件简单
  • 能使用的!微信 在安卓手机里可以使用,安装是用java 开发的,所以 可以用java开发
  • 微信公众平台开发注意事项: 一、微信公众平台开发是指为微信公众号进行业务开发,为移动应用、PC端网站、公众号第三方平台(为各行各业公众号运营者提供服务)的开发,请前往微信开放平台接入。 二、在申请到认证公众号之前,你可以先通过测试号申请系统,快速申请一个接口测试号,立即开始接口测试开发。 三、在开发过程中,可以使用接口调试工具来在线调试某些接口。 四、每个接口都有每日接口调用频次限制,可以在公众平台官网-开发者中心处查看具体频次。 五、在开发出现问题时,可以通过接口调用的返回码,以及报警排查指引(在公众平台 ...
  • 打开微信公众平台,在登录界面右下角有个“无法登录?”的链接,点击进入。 选择自己的账号类型,按提示修改即可。 修改完后重新登录即可,这时候就是新密码了。 希望回答能给你带来帮助~ 如果满意,请采纳,如还有疑问,可继续追问! 您也可以向我们团队发出请求,会有更专业的人来为您解答!
  • 微网站开发模式教程:   第一步:申请消息接口   在公众平台网站的高级功能 – 开发模式页,点击“成为开发者”按钮,填写URL和Token,其中URL是开发者用来接收微信服务器数据的接口URL。Token可由开发者可以任意填写,用作生成签名。   第二步:验证URL有效性   开发者提交信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数:   开发者通过检验signature对请求进行校验。若确认此次GET请求来自微信服务器,请原样返回 echostr参数内容,则接入生效,成为开发 ...
  • 不是仿,是直接登录到微信公众平台,但是没有通过他们的登录界面登录进去,而是用程序提交用户名密码登录进去,然后进行相关操作,往相关接口提交数据
  • 刚刚看错了 这个在原理上是可以实现的 但是电话号码除外 这个需要关注的人自己提供给公众号才行
  • 微信公众平台需要重新注册,账户是邮箱,密码需要重新设定 和微信不是一回事