私が経験している問題はこの問題問題は、ブラウザから呼び出すとファイルをダウンロードする特定のURLがありますが、コマンドラインから呼び出すとwget
(blaは文字列)という名前のAPI.php?bla
ファイルが生成されることです。以前の質問では、wgetの--refererオプションの使用を提案するいくつかの回答がありました。これは私には効果がなく、過度に複雑に見えます。
より簡単な解決策があるかどうか疑問に思います。ブラウザが呼び出すのと同じように、端末からURLを呼び出して、正しいファイルがダウンロードされたことを確認するために、ブラウザが通常行うすべてのことを実行できますか? xdg-openを使用できますが、これを行うとブラウザウィンドウが不要に開かれます。これは見苦しいです。
答え1
wgetを使用してアクセスするときと、対話型ブラウザを使用してアクセスするとURLが異なるコンテンツを返すことができる理由はいくつかあります。サーバーは、ユーザーエージェント、リファラー、クッキー、JavaScriptの可用性、およびJavaScriptを使用して照会できる多くの属性に基づいてさまざまなコンテンツを提供できます。
「重い」ブラウザ(JSなどをサポート)の動作をシミュレートする唯一の一般的な解決策は、ブラウザを実行することです。より軽いソリューションは、サーバーが依存しているブラウザの機能に応じて機能する場合があります。ブラウザをヘッドレスで実行できます。バラよりwgetを使用してホスティングサイトからダウンロードするには?、カールを使用してネットワーク要求を自動化しますか?、LinuxでFirefoxヘッドレスを実行する方法(例:libgtk-x11-2.0.so.0は不要)?、…