专栏首页TLingC's Zone用Simple HTML DOM自动查高考分数与录取情况

用Simple HTML DOM自动查高考分数与录取情况

这个程序原本是做来给自己用的,免去了查成绩的手抖又心跳加速打信息打错等各种问题,页面改动后直接发送邮件到自己的邮箱里,不看也不行→_→哈哈哈 Simple HTML DOM:http://simplehtmldom.sourceforge.net/ 我这里用的查询地址是广州招考的,查询没有验证码,没有了验证码识别的问题。

先模拟一次提交,找到提交数据。

用Curl模拟提交

$cookie_file = tempnam("tmp","cookie");
function postData($url, $data)
{
  global $cookie_file;
  $ch = curl_init();
  $timeout = 300;
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  curl_setopt($ch, CURLOPT_COOKIEJAR,  $cookie_file);
  $handles = curl_exec($ch);
  curl_close($ch);
  return $handles;
}
$contents = file_get_contents("http://gaokao.gzzk.cn/mopub_login3.aspx");
$html = str_get_html($contents);
$__VIEWSTATE = $html->find('#__VIEWSTATE',0)->attr['value'];
$__VIEWSTATEGENERATOR = $html->find('#__VIEWSTATEGENERATOR',0)->attr['value'];
$__EVENTVALIDATION = $html->find('#__EVENTVALIDATION',0)->attr['value'];
  $url='http://gaokao.gzzk.cn/mopub_login3.aspx';
$argv = array(
    '__EVENTTARGET' => "LoginButton", 
    '__EVENTARGUMENT' => "",
    '__VIEWSTATE' => $__VIEWSTATE,
    '__VIEWSTATEGENERATOR' => $__VIEWSTATEGENERATOR, 
    '__EVENTVALIDATION' => $__EVENTVALIDATION,
    'text_biaoshi' => "", //考号
    'text_mima' => '' //密码
);
  $rdata = postData($url, $argv);

测试发现还有来源验证。。于是postData函数多加一行设置Referer。

测试成功,还有一层跳转

图中的链接对应结果页。

$html2 = str_get_html($rdata);
$newurl = "http://gaokao.gzzk.cn" . $html2->find('a',0)->attr['href'];
$contents2 = getData($newurl);
![](https://tlingc.ocdn.wuicent.com/2017/07/TIM截图20170722165515.jpg)

成功!再把成绩表格选取出来,并添加MD5验证,如果MD5没有变,则每隔5秒刷新,在页面改动后,把这个选取出来的表格作为邮件正文发送到我的邮箱即可。

$html3 = str_get_html($contents2);
$result = $html3->find('#td_center',0)->innertext;
echo $result; //result -> 成绩表格

完整源码

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
</head>
<body>
<?php
  $cookie_file = tempnam("tmp","cookie");
  function postData($url, $data)
  {
    global $cookie_file;
    $ch = curl_init();
    $timeout = 300;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_REFERER, "http://gaokao.gzzk.cn/mopub_login3.aspx");
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_COOKIEJAR,  $cookie_file);
    $handles = curl_exec($ch);
    curl_close($ch);
    return $handles;
  }
  function getData($url)
  {
    global $cookie_file;
    $ch = curl_init();
    $timeout = 300;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
    $handles = curl_exec($ch);
    curl_close($ch);
    return $handles;
  }
  include("simple_html_dom.php");
  $contents = file_get_contents("http://gaokao.gzzk.cn/mopub_login3.aspx");
  $html = str_get_html($contents);
  $__VIEWSTATE = $html->find('#__VIEWSTATE',0)->attr['value'];
  $__VIEWSTATEGENERATOR = $html->find('#__VIEWSTATEGENERATOR',0)->attr['value'];
  $__EVENTVALIDATION = $html->find('#__EVENTVALIDATION',0)->attr['value'];
    $url='http://gaokao.gzzk.cn/mopub_login3.aspx';
  $argv = array(
      '__EVENTTARGET' => "LoginButton", 
      '__EVENTARGUMENT' => "",
      '__VIEWSTATE' => $__VIEWSTATE,
      '__VIEWSTATEGENERATOR' => $__VIEWSTATEGENERATOR, 
      '__EVENTVALIDATION' => $__EVENTVALIDATION,
      'text_biaoshi' => "", //考号
      'text_mima' => '' //密码
  );
    $rdata = postData($url, $argv);

    $html2 = str_get_html($rdata);
  $newurl = "http://gaokao.gzzk.cn" . $html2->find('a',0)->attr['href'];
  $contents2 = getData($newurl);
  $html3 = str_get_html($contents2);
  $result = $html3->find('#td_center',0)->innertext;
  echo $result; //result -> 成绩表格
  $originmd5 = ""; //成绩出来前的td_center的MD5
  $currentmd5 = md5($result);
  if($currentmd5 != $originmd5)
  {
    echo "页面发生改动!";
    $tablelist = $html3->find('#table_list',0)->innertext;
    $html4 = str_get_html($tablelist);
    $totalmark = $html4->find('td.mytdfenge1',23)->innertext; //算总分
    //DO STH
  }
  else
  {
    echo '<meta http-equiv="refresh" content="5;url=checker.php">';
  }
?>
</body>
</html>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PHP curl post/get数据函数

    TLingC
  • 解决微信小程序在7.0.8及电脑版上的cookie问题

    微信小程序在7.0.8版本及电脑版上,response header的Set-Cookie参数变成小写,可能导致通过直接获取res.header['Set-Co...

    TLingC
  • 利用PHP把MySQL数据库内所有表编码转换为utf8mb4

    TLingC
  • PHP代理实现用老人机看小说

    为了应对当前HTML格式和js脚本对老人机的不友好,我们需要处理一下某些小说网站,让它回到十几年前的样子,剔除大量CSS和JS,精简HTML标签,这样就能够让老...

    猿哥
  • 记一次emlog明月浩空模板漏洞渗透

    上午闲着没事做就到站长资源平台看了下免费换链 浏览博客类网站时候发现有个网站在使用emlog明月浩空的模板 就想起了以前明月浩空的模板不是有漏洞...

    奶糖味的代言
  • 实时微信域名检测API接口的实现方式

    最近我们刚成立了一个项目,在微信推广中,域名时不时的就被微信拦截,这使我们都非常头大,这时我翻阅互联网上所有的资料,知道有微信域名检测这样一个API接口,问了身...

    qq_1401806571
  • 微信域名检测API接口,快速实时查询域名是否被微信拦截

    信域名检测技术主要源于域名经常被微信拦截,哪里能实时检测出来微信域名被封的情况呢?例如,各种版本的微信客户端、微信公众号后台绑定域名、小程序后台绑定域名等等。所...

    用户7007940
  • Pytest系列(12)- 测试结果生成HTML报告插件之pytest-html的详细使用

    https://www.cnblogs.com/poloyy/category/1690628.html

    小菠萝测试笔记
  • php 请求名片识别

    php-尚金殿
  • php文件下载限速,文件断点续传,多线程下载文件原理解析

    可以看出,php实现浏览器下载文件,主要是靠header头的支持以及echo 文件数据,那么,该如何限制速度呢?可以通过限制输出频率吗?例如每次读取1024之后...

    仙士可

扫码关注云+社区

领取腾讯云代金券