批量打開鏈接

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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章