一个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或正则表达式,则可以轻松打破脚本。