跳到主要內容

發表文章

好用的Chrome瀏覽器批次下載套件DownThemAll!推薦-終於不用一個一個下載了!!

建置網站最怕遇到的就是舊資料移轉,有時候檔案數量龐大,一個一個下載手都酸了,經查詢發現有更好的方法能決這問題,這裡將經驗分享給大家!! 例如這一個頁面,有60幾個PDF檔要下載,一個一個下載完天都亮了!!這時候真的需要借用工具的力量來幫我們自動化處理!! 推薦一個好用的Chrome瀏覽器批次下載套件DownThemAll! 先點Chrome瀏覽器最右上方的三個橫點,打開選單,找到「擴充功能」再選擇子選單「前往Chrome應用程式商店」 然後輸入關鍵字「DownThemAll」找到套件後安裝起來,接下來前往要下載檔案的頁面,點選右上方的工具列,找到DownThemAll,點選打開! 選擇DownThemAll打開設定選單,選擇DownThemAll,透過篩選器選擇設定 完成後按下載,只需要enter到底就能下載完成,檔案預設會放在C:\XXXX\XXXXX\Downloads\downthemall 目錄中 或是選擇OneClick也能下載, 一樣只需要鍵盤enter一直按到叮咚一聲,檔按下載就完成,至於為什麼要用OneClick,主要是他能模擬人工點擊,如果用批次,若是檔案中又包有iframe就會被下載兩次,或是更多次,因此OneClick是個不錯的決方法,經實測頁面60個pdf檔批次下載回來也是60個,數量正確檔按無缺損,這套件確實能解決大量檔案下載問題,有需要的朋友可以參考看看!! 備註:OneClick 模式並非解析整頁資源,而是僅擷取使用者可見之下載連結,等同模擬人工點擊流程,因此可避免因 iframe 或預覽機制造成的重複下載問題。 工作心得撰寫: 徐嘉裕 Neil hsu
最近的文章

Ubuntu 私有雲 PPA 安裝失敗/版本不上升解法(回應timeout)

今天在 Ubuntu 私有雲環境安裝 PPA 套件時遇到奇怪現象: 安裝apache2 sudo add-apt-repository -y ppa:ondrej/apache2 返回110 timeout 安裝php sudo add-apt-repository -y ppa:ondrej/php 返回110 timeout 我在想是不是卡到陰了!!經過查詢原來是add-apt-repository壅塞被卡住了,才會返回timeout,解決方法就: 手動加入 PPA + 手動匯入 GPG key, 完全不經過 add-apt-repository,就不會 timeout。 方法如下: 1、先取得目前 Ubuntu codename(jammy / noble / focal...) . /etc/os-release echo $VERSION_CODENAME 2、加入Apache2 PPA echo "deb http://ppa.launchpad.net/ondrej/apache2/ubuntu $VERSION_CODENAME main" \  | sudo tee /etc/apt/sources.list.d/ondrej-apache2.list 3、加入PHP PPA  echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu $VERSION_CODENAME main" \  | sudo tee /etc/apt/sources.list.d/ondrej-php.list 4、匯入 PPA key(使用 port 80 避開防火牆)apt-key 已被標記為 deprecated,但目前仍可正常使用。 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E5267A6C 5、更新套件庫並確認 Apache Candidate 版本 sudo apt update apt-cache policy apache2 需要返回這樣版號(不能兩個一樣) Installed: 2.4.52-xxx Candidate: 2.4.66-xxx   ← 必須比 I...

用 Linux 的 ipset 建立大量黑名單替換 Apache 的 .htaccess 黑名單方法

雲主機建好 LAMP 之後,接下來最重要的是建立 L3 及 L4 防火牆規則,把一些爬蟲、代理池與高風險國家 IP 區段封鎖,減輕硬碟的 I/O 壓力。 不然每隔幾秒就來一次請求,就算 L7 應用層有高階防爬蟲機制,還是會消耗雲主機的算力。 當然最好是在路由端用硬體防火牆清洗,但因為是雲主機沒有實體路由,因此改用 Linux kernel 層級的黑名單系統 ipset 也能達到 L3 與 L4 清洗效果,讓 Apache/PHP 完全碰不到,不吃 CPU、不吃 I/O。 經過實際執行、爆肝測試後,去除所有失敗方法,以下為正確建立ipset 黑名單的方法: 1、建立 ipset sudo ipset create blacklist hash:ip 如果看到: ipset v7.x.x: Set cannot be created: already exists 代表曾經建立過,需要 destroy。 如果返回: Command 'ipset' not found, but can be installed with: apt install ipset 表示 Linux 初始環境沒有預裝 ipset,輸入以下指令安裝: sudo apt update sudo apt install ipset -y 完成後驗證: ipset list 如果返回: ipset v7.x.x: The set with the given name does not exist 表示 ipset 已成功安裝(但還沒建立 blacklist)。 2、建立一份「只有網段」的列表檔 輸入指令建立 sudo nano /root/blacklist.txt 貼上以下內容(改成您自己的IP名單) 1.0.1.0/24 1.0.2.0/23 1.0.8.0/21 1.0.32.0/19 (略…) Ctrl+O 儲存 → Enter 確認 → Ctrl+X 返回。注意:一定要用 nano 建立,避免 BOM/CRLF 問題。 3、建立自動載入腳本 輸入指令建立 sudo nano /usr/local/bin/ipset-load.sh 貼入以下腳本 #!/bin/bash # 建立 blacklist(若存在就忽略) ipset create blacklist hash:net...

雲主機設定 VirtualHost 方法(將 www 與 IP 自動 301 轉向單一網址)— SEO 最佳化

完成雲主機 LAMP 架設後,下一步就是把 DNS 指向新空間。但此時你可能會遇到一個常見問題: www.website.com 可以進入網站 website.com 也能進入網站 伺服器 IP 也能直接打開網站 等於一個網站有三個入口。 這會造成: 搜尋引擎收錄混亂(www / non-www / IP 三份內容) SEO 分數被分散 資料表的網址寫入不一致(有 www、有 IP、沒 www 都混在一起) 因此,我們需要建立 VirtualHost 來統一入口,讓所有訪問都自動轉向單一網址(正規化 Domain),方法如下: 1、建立 VirtualHost 設定檔 sudo nano /etc/apache2/sites-available/default_host.conf 貼上以下內容(http): <VirtualHost *:80>     ServerName website.com     ServerAlias www.website.com     RewriteEngine On     # 不管是 website.com、www.website.com、或 IP / 其它 Host     # 一律丟到 https://website.com     RewriteRule ^/(.*)$ https://website.com/$1 [L,R=301] </VirtualHost> 請把 website.com 改成你自己的網址 。 如果有啟用SSL功能(https),請再增加443部分 <VirtualHost *:443>     ServerName website.com     ServerAlias www.website.com     RewriteEngine On     DocumentRoot /var/www/html     # 如果有資料夾要轉首頁一併處理     RewriteCond %{REQUEST_URI} ^/ folder (/...

使用雲主機Xoops資料夾權限設定方法(安全)

由於早期網站大多租用虛擬主機,主機商(虛擬主機)不開放 owner 權限設定。FTP 上傳的檔案都是你自己的 user,但 Apache 執行的身分是 www-data(或 nobody)。因此 Apache 無法寫入 FTP 上傳的目錄。能讓 PHP 寫入資料的唯一方法,就是把資料夾權限設為 777(完全開放) 。 但現在已經 2025 年,這個方法在現代 雲主機 = 直接開大門請人入侵、請人來挖礦 。 只要輸入像下面這種命令: curl -T shell.php http://website.com.tw/uploads/ 把一句話木馬丟進去。或者: curl -X PUT -d "<xml>亂碼" http://website.com.tw/uploads/ 整個 uploads 直接被毀。 好在時代進步,多數虛擬主機資料夾,只要設成 755 就能讓 PHP 正常存取(因為 suPHP 或 CageFS) 。至於雲主機或 VPS,則應該使用以下方法取代 777: 設定資料夾權限(替代777方法) chmod -R 775 /var/www/html/uploads chown -R www-data:www-data /var/www/html/uploads 設定檔案權限(替代777方法) chown www-data:www-data /var/www/html/xsitemap.xml chmod 664 /var/www/html/xsitemap.xml 這是 XOOPS 上雲後最安全 & 最正確的權限組合。 Apache 能寫、你能寫、非權限者不能寫 → 完美安全模型。 XOOPS 正確安全權限(建議清單) 目錄   權限  owner uploads   775  www-data xoops_data/caches   770  www-data xoops_data/configs   770   www-data xoops_data/data   770  www-data xoops_data/protector      770  www-data xoops_l...

Ubuntu主機ssh指定固定ip連線方法(防止掃描及暴力破解)

除非是內網段私有雲,不然一般 VPS 或雲主機的預設模式 ssh 是完全開放的,Port 22 對 0.0.0.0/0 全世界開放,只要知道 IP + 密碼即可登入,如果不是使用金鑰方式連線,非常建議建立 UFW 防火牆規則,將 SSH 登入限制為固定 IP 白名單,否則 SSH 端口可能每分鐘被測試 50~100 次。 這些都是正常的掃描行為: Failed password for root from 152.xx.xx.xx Failed password for root from 103.xx.xx.xx Invalid user ubuntu from 185.xx.xx.xx LOG 膨脹事小,如果密碼真的被猜出來,整台雲主機等於送給駭客當挖礦機玩具。 因此必須建立 SSH 白名單,方法如下: 步驟 1:安裝 UFW 防火牆(Ubuntu 標準 L4 防護) apt update apt install ufw -y 步驟 2:只允許你家 / 公司電腦的固定 IP 連線 SSH ( 紅色部分請改為您的固定 IP) ufw allow from 125.227.xxx.xxx to any port 22 步驟 3:封鎖全世界的 SSH(IPv4/IPv6 全封) ufw deny 22/tcp ufw deny 22 步驟 4:開放網站必要 Port ufw allow 80 ufw allow 443 步驟 5:檢查是否存在錯誤規則(如有 → 必刪) ufw status numbered 若有出現以下規則必須刪除,否則 SSH 白名單無效: 1、全世界允許 SSH(危險) [ 1] 22/tcp ALLOW IN Anywhere 刪除 → ufw delete 1 2、IPv6 全世界允許 SSH [ 6] 22/tcp (v6) ALLOW IN Anywhere (v6) 刪除 → ufw delete 6 步驟 6:啟動防火牆(開始生效) ufw enable 提示: Command may disrupt existing ssh connections Proceed with operation (y|n)? 輸入:y 成功後顯示: Firewall is active and enabled on system startup 完成...

升級Ubuntu22.04(Apache / PHP ) Ondřej Surý 的 PPA套件方法

當初使用 Ondřej Surý 的 PPA套件安裝(Apache / PHP )就是為了解決惱人的資安通報,果然網站上線沒多久通報就來了,這次主要有兩項要升級(Apache要高於2.4.64 / PHP要高於8.3.23),剛好來試看看傳說中的 PPA套件升級到底有多容易,以下是升級完整步驟紀錄 先備份檔案以防萬一 (但最終是沒用到備份檔,因為升級檔不會覆蓋到原始檔,這裡要給他5顆星的評價) sudo mkdir -p /root/apache_backup_$(date +%Y%m%d) sudo cp /etc/php/8.3/apache2/php.ini /root/apache_backup_$(date +%Y%m%d)/ sudo cp /etc/apache2/sites-available/default-ssl.conf /root/apache_backup_$(date +%Y%m%d)/ sudo cp /etc/apache2/mods-available/ssl.conf /root/apache_backup_$(date +%Y%m%d)/ sudo cp /etc/apache2/apache2.conf /root/apache_backup_$(date +%Y%m%d)/ sudo cp /etc/apache2/conf-available/security.conf /root/apache_backup_$(date +%Y%m%d)/ sudo cp /etc/apache2/ports.conf /root/apache_backup_$(date +%Y%m%d)/ 這樣所有重要設定就會備份到 /root/apache_backup_ 20251020 /,如果升級後有任何異常,你只要: sudo cp /root/apache_backup_ 20251020 /* /etc/apache2/... sudo systemctl reload apache2 就能一鍵復原 (紅字為今天日期) 再來升級Apache 1、更新套件列表:  sudo apt update 2、升級 Apache : sudo apt install --only-upgrade apache2 備註: 如果發生Progre...