Command-Line

我使用 Ctrl+u 和 curl 得到一個不同的 html 頁面

  • March 8, 2022

當我轉到此網頁(例如https://imgur.com/user/Ultraruben/submitted)並按Ctrl+u時,我得到一個網頁。當我嘗試通過命令行提取html時,curl <url>或者curl -L <url>我得到另一個。 lynx -dump <url>也不起作用(沒有javascript)。

我需要通過命令行(使用任何有效的工具),就像通過瀏覽器使用Ctrl+u.

這是我通過瀏覽器得到的:https ://justpaste.it/42ci1 這是 curl:https ://justpaste.it/9oy3g

網站對他們看到的具有不同內容的客戶端做出反應是很常見的。

其中一些是善意的:例如,一些網站竭盡全力支持非常舊的手機或 Windows PC。從安全的角度來看,您希望告訴 Internet Explorer 5 使用者他們需要更新 - 但您的工作可能是幫助向公眾提供健康資訊,而不是告訴沒有錢的人他們需要購買一台新的筆記型電腦。

有時,您需要支持帶有特別古怪網站的舊遊戲設備,以使其瀏覽器滿意,或者提供針對螢幕優化的網站版本。

無論如何,這可能就是這裡發生的事情;您的 curl 發送“嘿,我是 curl”,網路伺服器會使用專門針對自動化工具的頁面做出反應,而不是針對瀏覽器。

所以,首先:檢查如果你告訴 curl 使用與你的主瀏覽器相同的使用者代理,事情是否解決了。也許這已經解決了問題。

如果你說 lynx 不工作是因為它不支持 JavaScript,那麼,你需要一個能夠完成現代瀏覽器所做的所有 JavaScript 的東西。這意味著它需要是現代瀏覽器。有一些方法可以從命令行操縱瀏覽器。本質上,您正在尋找WebDriver

如果您不編寫幾行腳本,這將無法工作。Mozilla 的 WebDriver 文件有一個範例可以幫助您入門。在獲得原始碼之前,您需要添加一些等待(在載入完成時,加上幾分之一秒)以允許 JavaScript 完成。該範例通過等待特定元素開始存在來做到這一點。

引用自:https://unix.stackexchange.com/questions/693358