批量打开链接

1.应用场景

批量操作, 打开链接.

2.学习/操作

思路: 获取超链接标签, 然后使用批量打开每个超链接, 从而不需要手动一个个打开链接

完善: 建议用脚本实现, 然后写一个定时脚本[服务器上],每天定时执行.

环境: 

Chrome浏览器/其他浏览器也可以

PHP 7.3

nginx 1.15/1.16

方式一: 

2.1 使用 https://www.lmcjl.com/ 在线工具,抓取网页超链接[需要清洗数据,即不需要的数据去除掉即可]

https://www.lmcjl.com/index/graburl/index.html  //提取超链接在线工具

... 

2.2 使用在线工具批量打开超链接

2.2.1 输入 http://www.ab173.com/zhanzhang/openurls.php 回车

2.2.2 注意

首次操作,点击批量打开按钮后,浏览器会在上端网址栏www.ab173.com最右端有小图标(隐蔽图标)提示拦截本站弹窗,请点击选择为允许本站所有弹窗。(不允许弹窗就是屏蔽批量打开的功能,请放心选择)若已经选择允许弹窗,并测试可以批量打开网址,请忽略以下操作。

详细信息见 http://www.ab173.com/zhanzhang/openurls.php 常见问题

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);

邮件通知

//提供个思路

暂时参见: https://blog.csdn.net/william_n/article/details/103368258

实践TBD

定时脚本  //用shell/Perl编写

shell脚本

https://mp.csdn.net/postedit/103959494  //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

最终结果:

定时脚本结果:

正常执行.

备注

这里因为会将echo 输出的内容重定向输出到request_urls.txt文本中, 可能时间长了之后, 文件较大,

建议在shell脚本中, 添加代码判断, 如果文件大小超过xxMB, 便删除该文件.然后重建文该文件[应不用TBD].

...

...

3.问题/补充

TBD

4.参考

https://www.php.cn/php-weizijiaocheng-315749.html  //php curl批量打开网址(curl_multi类)的实现代码

https://blog.csdn.net/william_n/article/details/103140509 //工具

https://www.lmcjl.com/index/graburl/index.html  //提取超链接-在线工具
http://www.ab173.com/zhanzhang/openurls.php  //批量打开超链接-在线工具

https://blog.csdn.net/william_n/article/details/101305674 //Shell 编程

https://blog.csdn.net/william_n/article/details/102892526  //shell脚本编写思路

后续补充

...

发布了399 篇原创文章 · 获赞 32 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/william_n/article/details/103956783
今日推荐