PHP 结合前端 ajax 爬取网站信息后, 向指定用户发送指定短信;

news/2024/4/27 20:40:18/文章来源:https://blog.csdn.net/weixin_34199335/article/details/88758866
<?php
/*** Description* @authors Your Name (you@example.org)* # 根据时时彩的最新一期的号码, 判断如果为首尾同号则发送短信*  - phpQuery 分析网页, 获得网页数据, 获得html数据*  - curl_init 模拟真实浏览器访问, 配合 PHPquery*  - 根据手机号, 结合前端 get与post 请求发送短信通知*  - 使用的 php 的正则, 替换字符串*  - 使用 sleep 与 while 反复执行代码*  - 反复执行代码的同时, 还可以在浏览器输出* # 只有刷新 wamp 才能终止进程`* # 实际在云服务中会报错: FastCGI 进程超过了配置的活动超时时限的解决方法*  - 无解*  - 所以只能在本机使用wamp开启* @date    2018-07-26 17:13:39* @version 1.0.0*/header("Content-Type: text/html;charset=utf-8"); 
require('phpQuery/phpQuery.php');
// $eg1=phpQuery::newDocumentFile("http://www.whu.edu.cn/tzgg.htm");
// $eg2=phpQuery::newDocumentFile("https://www.baidu.com/");
// $eg3=phpQuery::newDocumentFile("http://caipiao.163.com/award/cqssc/");
// echo pq("title",$eg1->getDocumentID())->html()."<br>";//$eg1与$eg1->getDocumentID()效果等同
// echo pq("title")->html()."<br>";//就近匹配 $eg2
// phpQuery::selectDocument($eg1); //默认会使用选定的文档
// $mes=pq("ul")->html();//获取所有的ul标签中的html内容
// $mes=pq("ul,li")->html();//获取所有的ul以及li标签中的html内容
// $t=pq("ul[class='article']")->html();//获取ul class="article"的html内容/**** 根据 手机号, 第几期, 当期号码 发送短信通知*/
function fnSendMessageNotifications($mobile, $lotteryNumber1, $lotteryNumber2)
{echo '<br>****[' . $mobile . ']****<br>' ;echo '<br>****[' . $lotteryNumber1 . ']****<br>' ;echo '<br>****[' . $lotteryNumber2 . ']****<br>' ;$host = "http://cowsms.market.alicloudapi.com";$path = "/intf/smsapi";$method = "GET";$appcode = "你的appcode";$headers = array();array_push($headers, "Authorization:APPCODE " . $appcode);$querys = "mobile=" . $mobile . "&paras=" . $lotteryNumber1 . "%2C" . $lotteryNumber2 . "&sign=%E6%B6%88%E6%81%AF%E9%80%9A&tpid=155";echo '<br>****[' . $querys . ']****<br>' ;$bodys = "";$url = $host . $path . "?" . $querys;$curl = curl_init();curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);curl_setopt($curl, CURLOPT_FAILONERROR, false);curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_HEADER, true);if (1 == strpos("$".$host, "https://")){curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);}var_dump(curl_exec($curl));
}/*** 添加 USERAGENT , 模拟真实浏览器访问* */ 
function get_fcontent($url,  $timeout = 5 ) {$url = str_replace( "&amp;", "&", urldecode(trim($url)) );$cookie = tempnam ("/tmp", "CURLCOOKIE");$ch = curl_init();curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );curl_setopt( $ch, CURLOPT_URL, $url);//需要获取的URL地址,也可以在 curl_init()函数中设置。curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );//连接结束后保存cookie信息的文件。curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );//启用时会将服务器服务器返回的"Location: "放在header中递归的返回给服务器,使用CURLOPT_MAXREDIRS可以限定递归返回的数量。curl_setopt( $ch, CURLOPT_ENCODING, "" );//HTTP请求头中"Accept-Encoding: "的值。支持的编码有"identity","deflate"和"gzip"。如果为空字符串"",请求头会发送所有支持的编码类型。在cURL 7.10中被加入。curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );//将 curl_exec()获取的信息以文件流的形式返回,而不是直接输出。curl_setopt( $ch, CURLOPT_AUTOREFERER, true );//当根据Location:重定向时,自动设置header中的Referer:信息。//禁用后cURL将终止从服务端进行验证。使用CURLOPT_CAINFO选项设置证书使用CURLOPT_CAPATH选项设置证书目录 如果CURLOPT_SSL_VERIFYPEER(默认值为2)被启用,CURLOPT_SSL_VERIFYHOST需要被设置成TRUE否则设置为FALSE。自cURL 7.10开始默认为TRUE。从cURL 7.10开始默认绑定安装。curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );   //  # required for https urls, 在发起连接前等待的时间,如果设置为0,则无限等待。curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout ); // 设置cURL允许执行的最长秒数。    curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 ); //指定最多的HTTP重定向的数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的。$content = curl_exec( $ch );curl_close ( $ch );return $content;
}// set_time_limit(0); // Maximum execution time , 设置成0的话,就是永不过期。
$lastQi = '';  // foreach保存的最后一个 期号
$lastNumber = ''; // foreach保存的最后一个 号码
$nTheLastTraversalPeriod = ''; // 缓存上一个foreach的首尾相同的期号, 用以比对是否为最新一期, 也用来当做最后一个符合条件的期号
$nTheLastTraversalNumber = '';
$sessionStorage_cacheQi = ''; // 缓存上一个发送了短信的期号/*** 获得最新一期期号, 获得最新一期号码* */
function fnGetTheLatestPhase(){//详细每个curlopt意思.转http://www.jb51.net/article/39331.htmglobal $lastQi;global $lastNumber;global $nTheLastTraversalPeriod;global $nTheLastTraversalNumber;global $sessionStorage_cacheQi;$url = 'http://caipiao.163.com/award/cqssc/';        $content = get_fcontent($url);phpQuery::newDocumentHTML($content);// $main = pq('title')->html();// $table = pq('.award-winNum')->html();$table_tr  = pq('tr');$nCurrentTerm = '';foreach( pq(".award-winNum") as $table_tr ) {$nCurrentTerm = pq($table_tr) -> prev()-> html(); // 当前的期号$nCurrentNumber = pq($table_tr) -> html();// 当前号码if($nCurrentNumber[0] === $nCurrentNumber[strlen($nCurrentNumber)-1] && intval($nTheLastTraversalPeriod)<intval($nCurrentTerm)){ // 假设当前号码的首尾相同, 且上一个遍历的首尾相同的期号小于当前期号(是foreach最后一个遍历的最大的期号)$nTheLastTraversalPeriod = $nCurrentTerm;$nTheLastTraversalNumber = $nCurrentNumber;echo '<br>****[' . $nTheLastTraversalPeriod . ']****<br>' ;}if($nCurrentTerm === '001' && !is_numeric(preg_replace('/ /', '', $nCurrentNumber))){// 假设重新开始, 每天新一期, 旧的还在缓存, 如何办?// 假设当前的期号为001, 表示的时时彩从头开始, 此时需要:// - 删除缓存的上一个发送短信的期号// - 删除缓存的上一个首尾相同的期号$nTheLastTraversalPeriod = '';$sessionStorage_cacheQi = '';}// // echo pq($table_tr); // $text = pq($table_tr) -> html();// 号码// $_lastQi = pq($table_tr) -> prev()-> html(); // 当前元素的上一个元素// echo '<br>****[' . $nTheLastTraversalPeriod . ']****<br>' ;// if($text[0] === $text[strlen($text)-1] && intval($sessionStorage_cacheQi||'')<intval($_lastQi) && intval($nTheLastTraversalPeriod)<intval($_lastQi) ){// if($text[0] === $text[strlen($text)-1] && intval($nTheLastTraversalPeriod)<intval($_lastQi) ){echo '<br>';}echo '<hr>';if($nTheLastTraversalPeriod !== $sessionStorage_cacheQi){ // 假设没有值得发送的期号, 假设当前发送的期号与之前发送的期号不同(不能相同), 则不执行相关代码(发送短信)$sessionStorage_cacheQi = $nTheLastTraversalPeriod;$object = (object) ['nPeriodNumber' => $nTheLastTraversalPeriod,'nNumber' => preg_replace('/ /', '', $nTheLastTraversalNumber),];return $object;}else{$object = (object) ['nPeriodNumber' => '','nNumber' => '',];return $object;}
}
// var_dump(fnGetTheLatestPhase());// $options = fnGetTheLatestPhase();
// fnSendMessageNotifications('185********', $options->nPeriodNumber, $options->nNumber);
while (1) {$options = fnGetTheLatestPhase();// 两者必须同时使用来刷新输出缓冲ob_flush(); //将数据从php的buffer中释放出来flush(); //将释放出来的数据发送给浏览器, 要是没有 flush 和 ob_flush , 浏览器就会陷入一种假卡死的状态var_dump($options);if($options->nPeriodNumber){fnSendMessageNotifications('185****', $options->nPeriodNumber, $options->nNumber);}sleep(5);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_747395.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单位网站老是被劫持跳转到博彩网站怎么办

这几天我们Sine安全接到一个单位服务器里的三个网站都被劫持跳转问题的客户反映在百度搜索关键词后点击进入网站直接被跳转到菠菜网站,直接在浏览器里输入网址是正常打开的,由于客户单位网站的领导比较重视这个被恶意劫持跳转的问题特别要求加班要抓紧处理解决掉这个网站安全问…

phantomjs 抓取、截图中文网站乱码的问题的解决

2019独角兽企业重金招聘Python工程师标准>>> 1、用phantomjs抓取html乱码的解决方案&#xff1a; phantomjs --output-encodinggbk test.js http://webscan.360.cn/index/checkwebsite?urlwww.coding123.net 这两个参数可以指定编码 ... --output-encodingencoding…

《大型网站服务器容量规划》——3.4 通过回归方程规划容量

本节书摘来自异步社区《大型网站服务器容量规划》一书中的第3章&#xff0c;第3.4节,作者&#xff1a; 郑钢 更多章节内容可以访问云栖社区“异步社区”公众号查看。 3.4 通过回归方程规划容量 回归方程是统计学里面的知识&#xff0c;是一种应用数学&#xff0c;通常属于数学…

Chrome 不想让 HTTPS 网站通过 HTTP 下载文件

你是否经历过访问的明明是一个 HTTPS 网站&#xff0c;但是有时候站内下载东西使用的协议却是 HTTP&#xff0c;这其实存在安全隐患&#xff0c;现在 Chrome 不想让这样的事情发生。 ZDNet 报导&#xff0c;谷歌 Chrome 工程师正计划在 HTTPS 网站上默认禁止一些通过 HTTP 下载…

windows 2003和server 2008 取消对网站的安全检查/去除添加信任网站

2019独角兽企业重金招聘Python工程师标准>>> 服务器管理器->安全信息->配置IE ESC->管理员禁用->确定并重启浏览器 正常访问网站&#xff0c;提示如下&#xff1a; 转载于:https://my.oschina.net/guiguketang/blog/3037114

PHP开发网站到瓶颈了,技术上不知如何突破

2019独角兽企业重金招聘Python工程师标准>>> 推荐的一些牛逼的博客网站&#xff1a; 风雪之隅 看几个大公司的技术博客&#xff0c;学习一下一线的开发人员都在做什么&#xff0c;就差不多了腾讯大讲堂腾讯全端 AlloyTeam 团队点评美团技术团队蘑菇街技术博客 Nginx…

SEO终极算法(二)

上一篇我的文章《草根站长这一年用血的教训换来的SEO终极算法》受到了许多读者的争议。今天为了迎合读者迫切的需求&#xff0c;特意写了SEO终极算法(二)&#xff0c;希望给做SEO的朋友们能有一些启发。本篇文章比较基础常识性的SEO基础的问题我就不写了&#xff0c;只写比较有…

TP5实现支付宝电脑网站支付学习笔记

这两天在公司做一个小型WEB项目,需要有支付功能。第一次做支付宝的支付&#xff0c;踩了点小坑&#xff0c;还算顺利。激动的我赶紧记下实现的流程。第一步当然是在支付宝开放平台申请公钥私钥APPID等&#xff0c;支付宝关官方文档都有详细介绍&#xff0c;这里就省略。申请完了…

云服务器 ECS 建站教程:快速搭建 phpwind 论坛系统

快速搭建 phpwind 论坛系统phpwind 是采用 PHP MySQL 方式运行的开源社区程序。轻架构&#xff0c;高效率简易开发&#xff0c;帮助您快速搭建并轻松管理社区站点。phpwind 提供了 2 款完全不同的版本&#xff0c;分别是拥有成熟功能、海量插件支撑的 phpwind 稳定版&#xff…

记一次JavaWeb网站技术架构总结

俗话说的好&#xff0c;冰冻三尺非一日之寒&#xff0c;滴水穿石非一日之功&#xff0c;罗马也不是一天就建成的&#xff0c;当然对于我们开发人员来说&#xff0c;一个好的架构也不是一蹴而就的。 初始搭建 开始的开始&#xff0c;就是各种框架一搭&#xff0c;然后扔到Tomcat…

网站SSL安装配置

背景介绍&#xff1a;HTTPS&#xff0c;全称&#xff1a;Hyper Text Transfer Protocol over Secure Socket Layer,是通过SSL安全机制传输&#xff0c;保证网站数据不被窃听、冒充、篡改等安全风险&#xff0c;保证网站传输安全可靠&#xff0c;下面是通过nginx配置ssl模块记录…

【提权过程】嘉缘网站--提权,代理,内网渗透(针对445端口)

这篇是由上篇 【渗透过程】嘉缘网站--测试https://www.cnblogs.com/G-Shadow/articles/10964374.html之后的操作&#xff0c;文章包括了提权&#xff0c;HTTP代理及对内网的渗透 使用蚁剑连接上写入的一句话后&#xff0c;使用虚拟终端发现自己权限为最高权限可以执行任何操作 …

大型网站技术架构(五)网站高可用架构

2019独角兽企业重金招聘Python工程师标准>>> 网站的可用性&#xff08;Avaliability&#xff09;描述网站可有效访问的特性。 1、网站可用性的度量与考核 网站不可用时间&#xff08;故障时间&#xff09;故障修复时间点-故障发现&#xff08;报告&#xff09;时间点…

大型网站技术架构(四)网站的高性能架构

2019独角兽企业重金招聘Python工程师标准>>> 网站性能是客观的指标&#xff0c;可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间&#xff0c;指从发出请求到最后收到响应数据所需要的时…

大型网站技术架构(八)网站的安全架构

2019独角兽企业重金招聘Python工程师标准>>> 从互联网诞生起&#xff0c;安全威胁就一直伴随着网站的发展&#xff0c;各种Web攻击和信息泄露也从未停止。常见的攻击手段有XSS攻击、SQL注入、CSRF、Session劫持等。 1、XSS攻击 XSS攻击即跨站点脚本攻击&#xff08;…

实现手机访问,自动跳转网站手机版

百度Site App的uaredirect.js实现手机访问&#xff0c;自动跳转网站手机版 以下为代码&#xff0c;可放置在网站foot底部文件&#xff0c;或者haead顶部文件&#xff0c;建议将代码放在网站顶部&#xff0c;这样可以实现手机访问立即跳转&#xff01; <script src"http…

通过webDAV来管理网站上的资源

WebDAV&#xff08;Web Distributed Authoring and Versioning&#xff09;扩展了HTTP.1.1通信协议的功能&#xff0c;他让具备适当权限的用户&#xff0c;可以直接通过浏览器、网上邻居来管理远程的webDAV文件夹内的文件&#xff0c;我们下面就来讲一下webDAV是实现。一、启用…

猫咪单独为某个网站添加Proxy

猫咪将overleaf网站添加到猫咪名单中&#xff0c;猫咪单独为某个网站添加猫咪 坑。暂时没有找到解决方案。 我想实现的效果是&#xff0c;打开一个网站&#xff0c;如果网站比较卡&#xff0c;就把这个网站添加到直联列表中。停止对它的猫咪。 方案1&#xff1a; 1、修改猫…

如何禁止自己的电脑访问某个网站?

如何禁止自己的电脑访问某个网站&#xff1f;BlockSite 方案1&#xff1a; https://blog.csdn.net/main_double/article/details/105613165 https://zh.wikihow.com/%E5%9C%A8%E7%94%B5%E8%84%91%E4%B8%8A%E5%B1%8F%E8%94%BD%E7%BD%91%E7%AB%99 操作了一大堆都是没用的&…