一個BASH腳本來蜘蛛站點,按照鏈接和獲取URL(帶有內置過濾)到生成的文本文件中。
下載腳本並將其保存到計算機上所需的位置。
您需要在計算機上安裝wget 。
要檢查是否已經安裝,請嘗試單獨運行命令wget 。
如果您在Mac上或運行Linux上,則很可能已經安裝了WGET;但是,如果wget命令不起作用,則可能無法正確添加到您的路徑變量中。
如果您正在運行Windows:
從https://eternallybored.org/misc/wget/下載Windows的最後wget二進製文件
該下載可作為帶文檔的郵政編碼或EXE提供的郵政編碼。我會推薦Exe。
如果您下載了郵政編碼,請提取全部(如果Windows內置的Zip實用程序會出現錯誤,請使用7-zip)。此外,如果您下載了64位版本,請將wget64.exe文件重命名為wget.exe
將wget.exe移至C:WindowsSystem32
確保計算機上的grep版本支持-E, --extended-regexp 。要檢查支持,請運行grep --help並查找標誌。要檢查已安裝的版本,請運行grep -V 。
打開git bash,終端等,並設置fetchurls.sh腳本:
chmod +x /path/to/script/fetchurls.sh輸入以下來運行腳本:
./fetchurls.sh [OPTIONS]...另外,您可以執行以下任何一個:
sh ./fetchurls.sh [OPTIONS]...
# -- OR -- #
bash ./fetchurls.sh [OPTIONS]...如果您不傳遞任何選項,則腳本將在交互式模式下運行。
如果域URL需要身份驗證,則必須將用戶名和密碼作為標誌傳遞;在交互式模式下,沒有提示您這些值。
您可以將選項(作為標誌)直接傳遞到腳本,也可以將無需傳遞以在交互模式下運行腳本。
-d , --domainhttps://example.com您想爬網的完全合格的域URL(帶有協議)。
確保您輸入正確的協議(例如https )和URL或生成文件的子域可能為空或不完整。如果發現,該腳本將自動嘗試遵循第一個HTTP重定向。例如,如果您輸入https://www.adamdehaven.com的不正確協議( http://... ),則腳本將自動遵循重定向並為正確的https協議獲取所有URL。
只要目標URL(或第一個重定向)返回HTTP 200 OK的狀態,域的URL將成功蜘蛛。
-l , --location~/Desktop/c/Users/username/Desktop您想保存生成的結果的位置(目錄)。
如果目錄在指定位置不存在,則只要路徑的其餘部分有效,將自動創建新目錄。
-f , --filenamedomain-topleveldomainexample-com生成的文件的所需名稱,沒有空格或文件擴展名。
-e , --exclude"css|js|map"管道放置的文件擴展名列表,以排除結果。
為防止排除匹配文件擴展名列表的文件,只需傳遞一個空字符串""
-s , --sleep02在檢索之間等待的秒數。
-u , --usernamemarty_mcfly如果域URL需要身份驗證,則將用戶名傳遞到WGET命令。
如果用戶名包含空間字符,則必須傳遞內部引號。此值只能設置為標誌;在交互式模式下沒有提示。
-p , --passwordthats_heavy如果域URL需要身份驗證,則將密碼傳遞到WGET命令。
如果密碼包含空格字符,則必須傳遞內部報價。此值只能設置為標誌;在交互式模式下沒有提示。
-n , --non-interactive允許腳本在非相互作用的外殼中成功運行。
除非明確設置各自的標誌,否則該腳本將利用默認--location和--filename設置。
-i , --ignore-robots忽略域名robots.txt。
-w , --wget顯示WGET安裝說明。安裝說明可能會根據計算機的配置而有所不同。
-v , -V , --version顯示版本信息。
-t , --troubleshooting輸出在運行時接收到具有關聯值的選項標誌以進行故障排除。
-h , -? , --help顯示幫助內容。
如果您不傳遞 - 域名標誌,則該腳本將在交互式模式下運行,並將提示您以獲取未設置的選項。
首先,您將提示您要爬網的網站的完整URL(包括HTTPS/HTTP協議):
Fetch a list of unique URLs for a domain.
Enter the full domain URL ( http://example.com )
Domain URL:然後,您將提示您進入要保存的生成結果的位置(目錄)(默認為Windows上的桌面):
Save file to directory
Directory: /c/Users/username/Desktop接下來,提示您更改/接受生成文件的名稱(只需按Enter接受默認文件名):
Save file as
Filename (no file extension, and no spaces): example-com最後,將提示您更改/接受排除文件擴展名的默認列表(按Enter接受默認列表):
Exclude files with matching extensions
Excluded extensions: bmp | css | doc | docx | gif | jpeg | jpg | JPG | js | map | pdf | PDF | png | ppt | pptx | svg | ts | txt | xls | xlsx | xml該腳本將爬網站並將有效URL的列表編譯到新的文本文件中。完成後,腳本將顯示一條消息和生成文件的位置:
Fetching URLs for example.com
Finished with 1 result !
File Location:
/c/Users/username/Desktop/example-com.txt如果同名文件已經存在於該位置(例如,如果您以前使用同一URL運行腳本),則原始文件將被覆蓋。
默認情況下,該腳本會濾除許多通常不需要的文件擴展名。
文件擴展名列表可以通過--exclude標誌傳遞,也可以通過交互模式提供。
.bmp.css.doc.docx.gif.jpeg.jpg.JPG.js.map.pdf.PDF.png.ppt.pptx.svg.ts.txt.xls.xlsx.xml此外,還忽略了特定網站(包括WordPress)文件和目錄。
/wp-content/uploads//feed//category//tag//page//widgets.php//wp-json/xmlrpc腳本應濾除大多數不需要的文件類型和目錄;但是,您可以通過在fetchurls.sh文件中編輯fetchUrlsForDomain()函數來編輯過濾某些頁面,目錄和文件類型的正則表達式。
警告:如果您不熟悉GREP或正則表達式,則可以輕鬆打破腳本。