摘要:背景最近有需求下載頭像到本地,以文件形式上傳到第三方,遇坑就填第一版將獲取的信息以字符串返回,而不是直接輸出因為要寫文件啟用時會將頭文件的信息作為數(shù)據(jù)流輸出適合調(diào)試配置手冊文檔地址配置項需要什么翻著找找遇到幾個問題部分圖片所在主站防盜鏈機(jī)制
背景
最近有需求下載頭像到本地,以文件形式上傳到第三方,遇坑就填
curl 第一版$ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, // TRUE 將curl_exec()獲取的信息以字符串返回,而不是直接輸出(因為要寫文件) CURLOPT_HEADER => false, // 啟用時會將頭文件的信息作為數(shù)據(jù)流輸出(適合調(diào)試) CURLOPT_URL => "url", ]); $data = curl_exec($ch); curl_close($ch);
curl_setopt配置手冊(文檔地址),配置項需要什么翻著找找
遇到幾個問題:
部分圖片所在主站防盜鏈機(jī)制,header頭部需要加refer
部分圖片地址是facebook,要配代理,并且圖片會重定向到其他圖片服務(wù)器上
掛代理加超時,有時不定時拿不到,加重試機(jī)制
因此解決:
配置項加CURLOPT_REFERER => "xx地址"
配置項加
CURLOPT_FOLLOWLOCATION => true, // TRUE 時將會根據(jù)服務(wù)器返回 HTTP 頭中的 "Location: " 重定向 CURLOPT_PROXY => "代理地址", CURLOPT_PROXYPORT => "代理端口", CURLOPT_PROXYTYPE => CURLPROXY_SOCKS5, // 可以是 CURLPROXY_HTTP (默認(rèn)值) CURLPROXY_SOCKS4、 CURLPROXY_SOCKS5、 CURLPROXY_SOCKS4A 或 CURLPROXY_SOCKS5_HOSTNAME
隨便加個循環(huán),比如while
第二版$curl_opts = [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, CURLOPT_FOLLOWLOCATION => true, CURLOPT_URL => "圖片地址", CURLOPT_REFERER => "防盜鏈主站地址", CURLOPT_TIMEOUT => 20, ]; foreach (["fbcdn", "facebook"] as $domain) { if (stripos("圖片地址", $domain) !== false) { $curl_opts += [ CURLOPT_PROXY => "代理地址", CURLOPT_PROXYPORT => "代理端口", CURLOPT_PROXYTYPE => CURLPROXY_SOCKS5, ]; break; } } $retry_time = 2; while ($retry_time > 0) { $ch = curl_init(); curl_setopt_array($ch, $curl_opts); try { $data = curl_exec($ch); //data即為文件流 curl_close($ch); break; } catch (Exception $e) { // 可進(jìn)行其他異常處理 $retry_time--; } }
進(jìn)行curl_setopt配置時,注意參數(shù)有版本限制,低版過低本不支持,使用curl_version()確認(rèn)當(dāng)前環(huán)境版本
sftp使用之前shell確認(rèn)是已安裝ssh2擴(kuò)展,php -m | grep ssh2
$sftp_connection = ssh2_connect("地址", "端口"); // 如果是公鑰認(rèn)證,ssh2_auth_pubkey_file() ssh2_auth_password($sftp_connection, "用戶名","密碼"); $sftp = ssh2_sftp($sftp_connection); $remote_uri = sprintf("ssh2.sftp://%s/write/%s", (int) $sftp, "遠(yuǎn)程文件名"); // 強(qiáng)轉(zhuǎn)資源句柄 file_put_contents($remote_uri, file_get_contents("本地文件地址")); // 上傳寫入遠(yuǎn)程
大坑注意
這里ssh2_sftp獲取到的資源句柄使用時需要強(qiáng)轉(zhuǎn)int,官方坑人示例
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/28291.html
摘要:微軟也意識到了這個問題,于是來了,不僅開源而且跨平臺,前不久已經(jīng)發(fā)布了版本,號稱已經(jīng)兼容了下的的類庫,并且開發(fā)了強(qiáng)大的服務(wù)器應(yīng)用來替代用以跨平臺部署。 前言:被linux和java虐了快1年,筆者的內(nèi)心是崩潰的,這一年的經(jīng)歷,更加堅定了擁 護(hù).NET之心,微軟對于開發(fā)者真的是太友好了,無論從工具到文檔,乃至技術(shù)應(yīng)用性都是那么為用戶著想,筆者認(rèn)同一種說法JAVA之所以占有比...
摘要:七夕啦,作為開發(fā),妹子沒得撩就撩下服務(wù)器吧,妹子有得撩的同學(xué)那就左擁妹子右抱服務(wù)器吧,況且妹子是要禮物的,服務(wù)器又不用。下面我們來看一些常用的情景,我們需要如何打扮自己配置參數(shù)才能正確撩妹正確撩到服務(wù)器。 七夕啦,作為開發(fā),妹子沒得撩就撩下服務(wù)器吧,妹子有得撩的同學(xué)那就左擁妹子右抱服務(wù)器吧,況且妹子是要禮物的,服務(wù)器又不用。好啦,長話短說再長說,祭出今天的工具——CURL(Client...
摘要:功能需求公司新開的公眾號需要將公司平臺現(xiàn)在的所有精品文章都導(dǎo)入,手動導(dǎo)入會有很多的工作量,所以采用自動化同步文章的方式來達(dá)到效果開發(fā)說明微信提供了新增永久素材的接口,本次功能是基于這個接口進(jìn)行數(shù)據(jù)同步的使用到的接口獲取永久素材列表接口新增永 功能需求 公司新開的公眾號需要將公司平臺現(xiàn)在的所有精品文章都導(dǎo)入,手動導(dǎo)入會有很多的工作量,所以采用自動化同步文章的方式來達(dá)到效果 開發(fā)說明 微信...
摘要:本程序是抓取知乎的用戶數(shù)據(jù),要能訪問用戶個人頁面,需要用戶登錄后的才能訪問。經(jīng)過查閱資料得知,是因為知乎對圖片做了防盜鏈處理。最終的結(jié)果是,用了一個周末就抓取了萬的用戶數(shù)據(jù)。 代碼托管地址:https://github.com/hoohack/zhihuSpider 這次抓取了110萬的用戶數(shù)據(jù),數(shù)據(jù)分析結(jié)果如下:showImg(https://segmentfault.com/img...
閱讀 2928·2021-11-23 09:51
閱讀 3173·2021-11-12 10:36
閱讀 3211·2021-09-27 13:37
閱讀 3163·2021-08-17 10:15
閱讀 2593·2019-08-30 15:55
閱讀 2756·2019-08-30 13:07
閱讀 797·2019-08-29 16:32
閱讀 2651·2019-08-26 12:00