思路 获取超链接标签, 然后使用批量打开每个超链接, 从而不需要手动一个个打开链接 完善 建议用脚本实现, 然后写一个定时脚本[服务器上],每天定时执行. 环境 Chrome浏览器/其他浏览器也可以 PHP 7.3 nginx 1.15/1.16 方式一 2.1 使用 LmCjl在线工具 在线工具,抓取网页超链接[需要清洗数据,即不需要的数据去除掉即可] --- 现在改为需要注册登录 -- 20210226 周五 家里 网站链接抓取_在线批量获取网页链接工具_链接抓取 //提取超链接在线工具 ... 2.2 使用在线工具批量打开超链接 2.2.1 输入 批量打开网址、网页、网站(网址、超链接批量打开工具,如何批量一键快速打开多个网站、网页) 回车 2.2.2 注意 首次操作,点击批量打开按钮后,浏览器会在上端网址栏www.ab173.com最右端有小图标(隐蔽图标)提示拦截本站弹窗,请点击选择为允许本站所有弹窗。(不允许弹窗就是屏蔽批量打开的功能,请放心选择)若已经选择允许弹窗,并测试可以批量打开网址,请忽略以下操作。 详细信息见 批量打开网址、网页、网站(网址、超链接批量打开工具,如何批量一键快速打开多个网站、网页) 常见问题 chrome://settings/content/popups //隐私设置和安全性 - 弹出式窗口和重定向 截图如下: 2.2.3 点击'批量打开',结果如下: 由上可知, 已经成功. 备注: 根绝个人电脑配置以及浏览器种类而定同时打开的超链接数. 这里:[作为参考] 同时开启200个tab, 是okay的. cpu会瞬间升高, 但是稍后会降下来, 内存也会升高, 不会降下来. //另外我这里仅仅是想执行请求, 并不是要得到响应结果,所以页面发出请求就可以关闭了. 方式二:使用爬虫获取超链接,后用循环执行打开超链接 //均使用脚本语言来处理, 即完全自己写代码来处理 php/python均可. PHP实现 <?php //1.数据文件[这里不是大文件] $dataFile = dirname(__FILE__) . '/urls.txt'; //2.读取文件内容 $dataStr = file_get_contents($dataFile); //3.清洗数据 $dataStr = preg_replace('/([\d]+-[\d]+\s)|(\r\n)/', ' ', $dataStr); $dataArr = explode(' ', $dataStr); //3.1 随机选取部分数据, 也可以做测试 shuffle($dataArr); //打乱 $dataArr = array_slice($dataArr, 0, 147); //4.统计时间 $timeSum = 0; $num = 0; $dataTime = date('Y-m-d H:i:s', time()); //5.curl请求[循环,也可以同时发请求 $ch = curl_init(); foreach($dataArr as $url){ if(!$url){ continue; } curl_setopt($ch, CURLOPT_URL, trim($url)); curl_setopt($ch, CURLOPT_HEADER, TRUE); curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body[即不输出body,Will be fasters] curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_exec($ch); if(!curl_errno($ch)){ $info = curl_getinfo($ch); $timeSum += $info['total_time']; $num++; //echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url'] . "\n\r"; } else { echo 'Curl error: ' . curl_error($ch) . " with $url \n\r"; } } // $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // echo $httpCode; echo $dataTime . ' Total took ' . $timeSum . ' seconds to send requests of ' . $num . ' urls' . "\n\r"; curl_close($ch); 邮件通知 // 提供个思路 暂时参见: Laravel 邮件_william_n的博客-CSDN博客_laravel 邮箱 实践TBD 定时脚本 // 用shell/Perl编写 shell脚本 Linux Crontab 定时任务 - 学习/实践_william_n的博客-CSDN博客 //Linux Crontab 定时任务 request_urls.sh #!/bin/sh cd ~/ningxiaofa/request_urls php -q ./request_urls.php >> ./request_urls.txt fileSize=`ls -l ./request_urls.txt | awk '{print $5}'` if [ ${fileSize} -gt 51200 ] then rm -rf ./request_urls.txt touch ./request_urls.txts fi 定时任务: //每31分钟执行一次 */31 * * * * ~/crontab/request_urls.sh >> ~/ningxiaofa/request_urls.txt 修改后[将重定向输出写到shell脚本中]: */31 * * * * ~/crontab/request_urls.sh 最终结果: 定时脚本结果: 正常执行. Note 这里因为会将echo 输出的内容重定向输出到request_urls.txt文本中, 可能时间长了之后, 文件较大, 建议在shell脚本中, 添加代码判断, 如果文件大小超过xxMB, 便删除该文件.然后重建文该文件[应不用TBD]. ... |