サイトをクモにし、リンクをたどり、URL(組み込みフィルタリングを備えた)を生成されたテキストファイルにフェッチするBASHスクリプト。
スクリプトをダウンロードして、マシンの目的の場所に保存します。
マシンにwgetをインストールする必要があります。
すでにインストールされているかどうかを確認するには、コマンドwget単独で実行してみてください。
MACを使用している場合、またはLinuxを実行している場合は、すでにWGETがインストールされている可能性があります。ただし、 wgetコマンドが機能していない場合、パス変数に適切に追加されない場合があります。
Windowsを実行している場合:
https://eternallybored.org/misc/wget/からWindowsの最新のwgetバイナリをダウンロードしてください
ダウンロードは、ドキュメント付きのzipとして、または単なるexeとして利用できます。 exeだけをお勧めします。
zipをダウンロードした場合は、すべてを抽出します(zipユーティリティに組み込まれたWindowsがエラーが発生した場合は、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(プロトコル付き)をクロールしたい。
URLまたは生成されたファイルの正しいプロトコル( httpsなど)とサブドメインを入力することを確認してください。スクリプトは、見つかった場合、最初のHTTPリダイレクトに自動的に追跡しようとします。たとえば、 https://www.adamdehaven.comの誤ったプロトコル( http://... )を入力すると、スクリプトは自動的にリダイレクトに従い、正しいHTTPSプロトコルのすべてのURLをフェッチします。
ドメインのURLは、ターゲットURL(または最初のリダイレクト)がHTTP 200 OKのステータスを返す限り、正常にスパイダーになります。
-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 、 --wgetwgetインストール手順を表示します。インストール手順は、コンピューターの構成によって異なる場合があります。
-v 、 -V 、 --versionバージョン情報を表示します。
-t 、 --troubleshooting出力は、トラブルシューティングのために実行時に関連する値を持つオプションフラグを受信しました。
-h 、 -? 、 --helpヘルプコンテンツを表示します。
-domainフラグを渡さない場合、スクリプトはインタラクティブモードで実行され、設定されていないオプションが求められます。
まず、クロールしたいサイトの完全な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や正規表現に精通していない場合は、スクリプトを簡単に破損できます。