<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                今天在公司碰到了一個bug,就是以前一直用curl下載的MP3錄音文件為空了,但是瀏覽器去get請求是有文件的,并且大小還不是0kb,但是我用curl下載下來就是0K,百思不得其解。終于功夫不負有心人,得到了方法,原來我一直要去第三方的接口拿到錄音數據,但是今天的錄音數據中地址跳轉了,也就是第一次請求的地址返回的是302, 這是以前的代碼 ``` $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); // curl_setopt($ch, CURLINFO_HEADER_OUT, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); $info = curl_exec($ch); ``` 也就是說curl在第一次請求額時候,服務器返回302,其實是要跳轉的,但是curl是默認沒有跳轉的,所以$info一直就是空的 改進之后 ``` $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); //curl_setopt($ch, CURLINFO_HEADER_OUT, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); $info = curl_exec($ch); ``` 這次是多了?CURLOPT_FOLLOWLOCATION,表示允許curl去跳轉。$info數據有了! ps:關于資料 ``` curl_setopt($ch, CURLOPT_MAXREDIRS,20); curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); CURLOPT_FOLLOWLOCATION即表示自動進行跳轉抓取, CURLOPT_MAXREDIRS表示最多允許跳轉多少次。 ``` 不過在使用時需要注意:CURLOPT_FOLLOWLOCATION需要在安全模式關閉未設置open_basedir的情況下才能使用。open_basedir是php.ini中的一項設置,功能是將用戶可操作的文件限制在某目錄下。 如果開戶了安全模式,或者設置了open_basedir,則無法使用自動跳轉抓取,此時可以采用連續抓取的辦法來抓取最終頁面。為加快速度和減少不必要的開銷,可以在中間非目標頁面的抓取過程中使用 ``` curl_setopt($rch, CURLOPT_HEADER, TRUE); curl_setopt($rch, CURLOPT_NOBODY, TRUE); ``` 只抓取頭信息,不抓取頁面內容,對header信息的狀態碼(301,302)進行判斷。如需跳轉,則從Location中獲取到跳轉的地址,再次進行抓取,直至狀態碼為200狀態。最后再對目標頁面進行抓取 摘自:[https://www.cnblogs.com/tianye8123/p/5998627.html](https://www.cnblogs.com/tianye8123/p/5998627.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看