質問: 自分の管理しているサーバにdmgをscpして、それをwgetでダウンロードできません。 具体的には以下のようなエラーが出力されます。 % wget https://◯◯◯/◯◯.app --2017-03-15 03:03:18-- https://◯◯◯/◯◯.app ~~~ HTTP による接続要求を送信しました、応答を待っています... 403 Forbidden 2017-03-15 03:03:19 エラー 403: Forbidden。 permissionの問題かと思ったのですが、当ファイルの権限は777でした。。 調べても解決方法がわかりません。どなたか宜しくお願いします。
回答: ### HTTPSに制限している場合 `--secure-protocol=auto`オプションを追加してください。 `wget`コマンドでHTTPSプロトコルを使ってファイルをやり取りするには `--secure-protocol=` オプションを指定する方法があります。GNU Wget 1.18では``に * `auto`:自動指定 * `SSLv2`, `SSLv3`, `TLSv1`, `TLSv1_1`, `TLSv1_2`:各プロトコルを使用(古いサーバー向け) * `PFS`:Perfect Forward Securityな暗号スイートを使用したTLS を指定できますが、基本的には `--secure-protocol=auto` で上手くいくかと思います。詳しくはGNU Wgetのマニュアルをご覧ください。このマニュアルを見ると他にもHTTPSの詳しい事情に対応するためのオプションが存在しますが、この回答では割愛します(参考に挙げているURLを参照ください)。 また、今回は大丈夫でしょうが、SSLサポート無しにコンパイルされた`wget`だとこれらのオプションに対応していません。その場合は自分でコンパイルする等が必要です。 * 参考 + GNU Wget Manual - HTTPS (SSL/TLS) Options + "Error while downloading HTTPS files using wget" -- Ask Ubuntu ### サーバー側でリクエストを制限している場合 HTTPのレベルにおいてサーバー側で何かしら制限をかけている場合も`wget`で 403 Forbidden が出ることがあります。たとえば典型的には User-Agent で弾かれていることがあります(GNU Wgetのデフォルトの User-Agent は`Wget/VERSION`です)。この場合、これらを逐一設定する必要があります。 `wget --help`や`man wget`を参考にしつつ、`--user-agent="Mozilla/5.0"`などのオプションを追加してください。User-Agent の他に考えられるものとしては、リファラやメディアタイプなどがあります。`--referer`や`--header`あたりを探してください。また、robots.txtやHTMLのmetaタグなどでアクセス制御されている場合もあります。リンクしたGNU Wgetのマニュアルをご覧ください。 ご自分で管理されているサーバーなのでしたらサーバーログを見つつサーバーの設定を変えるなり設定に合わせて`wget`するなりできると思います。 * 参考 + "Sites not accepting wget user agent header" -- Stack Overflow + "wget not working" -- Stack Overflow + GNU Wget Manual - HTTP Options + GNU Wget Manual - Robot Exclusion