第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 cURL 保存圖像

使用 cURL 保存圖像

PHP
慕少森 2022-07-02 17:04:04
這是一個指向圖像的 URL:https://www.somesite.com/some/dir/jsp/data.jsp?KEY=12155&TYPE=jpg&qi=R7SWtM5F5PL4cDDFfdfpIrqIWSY3gr2XGQg=如果我在 CLI 中使用 cURL 作為這個命令,我會得到圖像:/usr/bin/curl -o 1234.jpg 'the_url_to_image'我需要在 PHP 中使用 cURL 和參數(shù)。我嘗試了幾個參數(shù)來獲取圖像,我總是得到一個 403 錯誤已禁止訪問指定資源。阿帕奇雄貓我的參數(shù)(只有 cURL 參數(shù),將圖像寫入文件的代碼不在此處): $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $img_url); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_AUTOREFERER, false); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie_filename); curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie_filename); $page_content  = curl_exec($ch); curl_close($ch);編輯如果我將圖像 URL 提供給此頁面:onlinecurl.com我得到了圖像二進(jìn)制文件,沒有錯誤消息。所以圖像可以用cURL保存,我只需要 curl_setopt正確設(shè)置。編輯通過在 CLI 中運(yùn)行 a 命令,圖像被保存到本地路徑/usr/bin/curl -o 1234.jpg 'the_url_to_image'當(dāng)運(yùn)行相同的命令時(shí)shell_exec("/usr/bin/curl -o 1234.jpg 'the_url_to_image'")錯誤消息保存在 1234.jpg 文件中。同一命令的命令行和代碼執(zhí)行有什么區(qū)別?
查看完整描述

4 回答

?
繁星點(diǎn)點(diǎn)滴滴

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個贊

同一命令的命令行和代碼執(zhí)行有什么區(qū)別?

您的用戶代理甚至沒有關(guān)閉:

curl_setopt ($ ch, CURLOPT_USERAGENT, 'Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit / 537.36 (KHTML, like Gecko) Chrome / 79.0.3945.79 Safari / 537.36');

嘗試將其設(shè)置為真正的 curl-cli 用戶代理,例如

curl_setopt($ch,CURLOPT_USERAGENT,'curl/7.63.0');

或者

curl_setopt($ch,CURLOPT_USERAGENT,'curl/'.(curl_version()['version']));

這很罕見,但有可能(甚至有證據(jù)表明)他們正在使用用戶代理白名單,而 Google Chrome(或者是 Safari?)不在他們的白名單上,但 curl-cli 是......

另一種可能的解釋是,他們試圖檢測并阻止躺在他們的用戶代理上的人,并且很容易檢測到您在撒謊:您(錯誤地)說您是 Safari 或 Chrome,以及這兩者總是發(fā)送Acccept-Encoding: gzip/deflate/whatever,但你的 curl 請求沒有(因?yàn)槟銢]有使用 CURLOPT_ENCODING),因此很容易檢測到你的用戶代理是假的,也許這就是導(dǎo)致阻塞的原因。無論哪種方式,嘗試使用真正的 curl 用戶代理。


查看完整回答
反對 回復(fù) 2022-07-02
?
慕慕森

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個贊

401 未經(jīng)授權(quán)

403被禁止

這些描述得很糟糕。

401 真的意味著未經(jīng)過身份驗(yàn)證

403真的意味著未授權(quán)

如果這確實(shí)是一個受保護(hù)的資源,需要登錄才能獲取它,那么這意味著是的,服務(wù)器識別出你(你沒有得到 401),但你沒有所需的權(quán)限(403)。

另一方面,如果圖像確實(shí)是公開的,則實(shí)際粘貼鏈接可以幫助我們?yōu)槟峁椭?/p>


查看完整回答
反對 回復(fù) 2022-07-02
?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個贊

事實(shí)證明,問題很簡單。

- 第一個線索是終端中的命令正在運(yùn)行,但相同的命令shell_exec()返回錯誤。

-第二條線索是 delboy1978uk 提到的錯誤不是 401 not authenticated而是 403 non authorized

所以一定是 URL 或參數(shù)有問題。我打印了 URL,但沒有發(fā)現(xiàn)錯誤……長話短說,問題出在 URL 中的特殊字符上。當(dāng)我打印 URL 時(shí),瀏覽器&正確顯示了字符,而不是函數(shù)將其作為參數(shù)&

htmlspecialchars_decode()因此,如果我在運(yùn)行命令之前提供 URL,那么它可以完美運(yùn)行。

因此,請注意 URL 中的特殊字符!


查看完整回答
反對 回復(fù) 2022-07-02
?
湖上湖

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個贊

您可以嘗試添加


curl_setopt($ch, CURLOPT_POST, 0);

如果這不起作用,您必須在 web.xml 中添加 Apache Tomcat:


<login-config>

  <auth-method>BASIC</auth-method>

</login-config>


查看完整回答
反對 回復(fù) 2022-07-02
  • 4 回答
  • 0 關(guān)注
  • 180 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號