Troubleshooting of curl errors in Mandarin: Difference between revisions

Jump to navigation Jump to search
no edit summary
No edit summary
Line 5: Line 5:
{{Tips}} 如何除錯 cUrl 命令:(1) 啟用 [https://ec.haxx.se/usingcurl/verbose 詳細模式] 例如:「... 使用 {{kbd | key=<nowiki>-v</nowiki>}} / {{kbd | key=<nowiki>--verbose</nowiki>}} 選項執行命令以獲取更多資訊。」或 (2) 啟用 [https://ec.haxx.se/usingcurl/verbose/trace 追蹤選項] 例如:{{kbd | key=<nowiki>--trace-ascii [檔案名]</nowiki>}} 注意:如果同時啟用詳細模式和追蹤選項,詳細模式將覆蓋追蹤選項。
{{Tips}} 如何除錯 cUrl 命令:(1) 啟用 [https://ec.haxx.se/usingcurl/verbose 詳細模式] 例如:「... 使用 {{kbd | key=<nowiki>-v</nowiki>}} / {{kbd | key=<nowiki>--verbose</nowiki>}} 選項執行命令以獲取更多資訊。」或 (2) 啟用 [https://ec.haxx.se/usingcurl/verbose/trace 追蹤選項] 例如:{{kbd | key=<nowiki>--trace-ascii [檔案名]</nowiki>}} 注意:如果同時啟用詳細模式和追蹤選項,詳細模式將覆蓋追蹤選項。


== 如何解決命令執行問題:在 DOS/終端機中可以運作,但在 PHP 中不運作 ==
== Curl 問題清單 ==
=== 如何解決命令執行問題:在 DOS/終端機中可以運作,但在 PHP 中不運作 ===
手動在 DOS 或 Windows 終端機(如 [https://conemu.github.io/ ConEmu]) 中執行命令時可以運作,但透過 PHP 執行時可能不會產生預期的結果。常見的問題是命令沒有生成預期的檔案。
手動在 DOS 或 Windows 終端機(如 [https://conemu.github.io/ ConEmu]) 中執行命令時可以運作,但透過 PHP 執行時可能不會產生預期的結果。常見的問題是命令沒有生成預期的檔案。


Line 26: Line 27:




== 如何解決 cUrl error (3) bad range in URL position xx ==
=== 如何解決 cUrl error (3) bad range in URL position xx ===


'''問題'''
'''問題'''
Line 57: Line 58:
如果你不確定是否需要編碼,可以使用線上 URL 編碼工具進行轉換,例如:[https://www.urlencoder.org/ URL 線上編碼和解碼工具]。
如果你不確定是否需要編碼,可以使用線上 URL 編碼工具進行轉換,例如:[https://www.urlencoder.org/ URL 線上編碼和解碼工具]。


== 如何解決 cUrl 錯誤 (#5): 不支援的代理語法 (Unsupported proxy syntax) ==
=== 如何解決 cUrl 錯誤 (#5): 不支援的代理語法 (Unsupported proxy syntax) ===
問題狀況:[https://en.wikipedia.org/wiki/SOCKS socks5] 代理的使用者名稱包含 @ 符號,例如 {{kbd | key=<nowiki>[email protected]</nowiki>}}
問題狀況:[https://en.wikipedia.org/wiki/SOCKS socks5] 代理的使用者名稱包含 @ 符號,例如 {{kbd | key=<nowiki>[email protected]</nowiki>}}


Line 76: Line 77:
可以使用 [https://www.urlencoder.org/ URL Encode and Decode - Online] 或 [https://www.php.net/manual/en/function.urlencode.php urlencode] 函數,跳脫 (Escape) 特殊符號<ref>[https://superuser.com/questions/937124/log-in-to-ftp-using-windows-explorer-with-in-the-username Log in to FTP using Windows Explorer with @ in the username - Super User]</ref>。
可以使用 [https://www.urlencoder.org/ URL Encode and Decode - Online] 或 [https://www.php.net/manual/en/function.urlencode.php urlencode] 函數,跳脫 (Escape) 特殊符號<ref>[https://superuser.com/questions/937124/log-in-to-ftp-using-windows-explorer-with-in-the-username Log in to FTP using Windows Explorer with @ in the username - Super User]</ref>。


== 如何解決 cUrl 錯誤 (#56):OpenSSL SSL_read: No error. ==
=== 如何解決 cUrl 錯誤 (#56):OpenSSL SSL_read: No error. ===
錯誤條件:Windows 上的 curl 版本 7.67.0 遇到問題。[curl_version](https://www.php.net/manual/en/function.curl-version.php) 返回的結果:
錯誤條件:Windows 上的 curl 版本 7.67.0 遇到問題。[curl_version](https://www.php.net/manual/en/function.curl-version.php) 返回的結果:
<pre>
<pre>
Line 98: Line 99:




== 如何解決錯誤:error code: 1010 ==
=== 如何解決錯誤:error code: 1010 ===


識別問題
識別問題
Line 112: Line 113:
* 建議改成使用 JavaScript 基礎的爬蟲 (JavaScript-bases browser) 來代替 cURL 命令的方案 <ref>[https://www.zenrows.com/blog/cloudflare-error-1010#how-to-avoid Cloudflare Error 1010: What Is It and How to Avoid - ZenRows]</ref>。
* 建議改成使用 JavaScript 基礎的爬蟲 (JavaScript-bases browser) 來代替 cURL 命令的方案 <ref>[https://www.zenrows.com/blog/cloudflare-error-1010#how-to-avoid Cloudflare Error 1010: What Is It and How to Avoid - ZenRows]</ref>。


== 如何解決 400 Bad Request 錯誤:UTF-8 字元編碼問題 ==
=== 如何解決 400 Bad Request 錯誤:UTF-8 字元編碼問題 ===


'''問題分析:'''
'''問題分析:'''
Line 145: Line 146:
</pre>
</pre>


== 如何解決錯誤 405 Method Not Allowed ==
=== 如何解決錯誤 405 Method Not Allowed ===


當我嘗試爬取網路資源但遇到錯誤訊息:"錯誤 405 方法不允許"
當我嘗試爬取網路資源但遇到錯誤訊息:"錯誤 405 方法不允許"
Line 152: Line 153:
* 確保使用正確的 HTTP 請求方法 e.g. {{kbd | key=GET}} 或 {{kbd | key=POST}} 來存取網路資源。
* 確保使用正確的 HTTP 請求方法 e.g. {{kbd | key=GET}} 或 {{kbd | key=POST}} 來存取網路資源。


== 如何解決錯誤 415 Unsupported Media Type ==
=== 如何解決錯誤 415 Unsupported Media Type ===
當我嘗試 POST JSON(作為有效負載)但遇到錯誤訊息:"錯誤 415 不支援的媒體類型"
當我嘗試 POST JSON(作為有效負載)但遇到錯誤訊息:"錯誤 415 不支援的媒體類型"


Line 161: Line 162:
</pre>
</pre>


== 如何解決 cURL 返回二進位資料,而非 html 或 json ==
=== 如何解決 cURL 返回二進位資料,而非 html 或 json ===


* [https://stackoverflow.com/questions/28283822/curl-returns-binary-data-instead-of-html php - cURL returns binary data instead of html - Stack Overflow]
* [https://stackoverflow.com/questions/28283822/curl-returns-binary-data-instead-of-html php - cURL returns binary data instead of html - Stack Overflow]
* [https://errerrors.blogspot.com/2020/06/resolve-curl-returns-binary-data-instead-of-html-or-json.html 解決 cUrl 下載的網頁或 JSON 看起來像是亂碼的問題]
* [https://errerrors.blogspot.com/2020/06/resolve-curl-returns-binary-data-instead-of-html-or-json.html 解決 cUrl 下載的網頁或 JSON 看起來像是亂碼的問題]


== 如何解決下載的檔案是空的 ==
=== 如何解決下載的檔案是空的 ===
錯誤條件
錯誤條件
* 當我執行了 Curl 命令 {{kbd | key=<nowiki>curl -O https://path/to/plain_text.txt</nowiki>}},但下載的檔案是空的。
* 當我執行了 Curl 命令 {{kbd | key=<nowiki>curl -O https://path/to/plain_text.txt</nowiki>}},但下載的檔案是空的。
Line 189: Line 190:
</pre>
</pre>


== 如何解決錯誤:no matches found ==
=== 如何解決錯誤:no matches found ===
錯誤條件
錯誤條件
* 當我執行了 Curl 命令 {{kbd | key=<nowiki>curl http://website.test/http_status.php?case=500</nowiki>}},但我遇到了錯誤訊息:"zsh: 未找到匹配:<nowiki>http://website.test/http_status.php?case=500</nowiki>"
* 當我執行了 Curl 命令 {{kbd | key=<nowiki>curl http://website.test/http_status.php?case=500</nowiki>}},但我遇到了錯誤訊息:"zsh: 未找到匹配:<nowiki>http://website.test/http_status.php?case=500</nowiki>"
Line 200: Line 201:
* Double quote the {{kbd | key=<nowiki>URL</nowiki>}} e.g. {{kbd | key=<nowiki>curl "http://website.test/http_status.php?case=500"</nowiki>}}
* Double quote the {{kbd | key=<nowiki>URL</nowiki>}} e.g. {{kbd | key=<nowiki>curl "http://website.test/http_status.php?case=500"</nowiki>}}


== 如何解決錯誤:Remote file name has no length ==
=== 如何解決錯誤:Remote file name has no length ===


錯誤訊息
錯誤訊息
Line 218: Line 219:




== 如何解決錯誤:zsh: parse error near `&' ==
=== 如何解決錯誤:zsh: parse error near `&' ===
錯誤狀況
錯誤狀況
<pre>
<pre>
Line 236: Line 237:
</pre>
</pre>


== 如何隱藏進度條 ==
=== 如何隱藏進度條 ===


執行 curl 命令時,通常會輸出詳細的下載和上傳進度資訊,如下所示:
執行 curl 命令時,通常會輸出詳細的下載和上傳進度資訊,如下所示:
Line 255: Line 256:
```
```


== 如何解決 cURL 非法檔名字元錯誤 ==
=== 如何解決 cURL 非法檔名字元錯誤 ===
執行包含非法字元的輸出檔名的 cURL 指令時,可能會遇到以下錯誤訊息:
執行包含非法字元的輸出檔名的 cURL 指令時,可能會遇到以下錯誤訊息:


Line 272: Line 273:
* 如有需要請先建立目錄:{{kbd | key=<nowiki>mkdir -p directory</nowiki>}}
* 如有需要請先建立目錄:{{kbd | key=<nowiki>mkdir -p directory</nowiki>}}


== Windows 與 Mac/Linux 系統的 cURL JSON 傳遞問題 ==
=== Windows 與 Mac/Linux 系統的 cURL JSON 傳遞問題 ===


'''1. 問題'''
'''1. 問題'''

Navigation menu