《PHP使用CURL采集微信圖片(公眾號)如何繞過防盜鏈系統?》要點:
本文介紹了PHP使用CURL采集微信圖片(公眾號)如何繞過防盜鏈系統?,希望對您有用。如果有疑問,可以聯系我們。
相關主題:PHP開發
使用PHP的CURL函數采集過微信公眾號的文章時,都會遇到圖片不能正常顯示,這是因為遇到了微信的防盜鏈系統。
網上有文章 說什么用JS,IFRAME等等方法,這些不適用PHP,因為PHP是服務端處理的。
解決方法:
只需2步就可以:
1、把referer設置為空,或設置為 https://mp.weixin.qq.com
2、把圖片地址全部過濾為http://
關于第2步,如果不這么做,那有時不會成功,因為微信公眾號中的圖片,有時是http://,有時是https://,如果是https://那么即使設了第一步把referer為空,也不會成功。比如:
只設置第一步:
http://mmbiz.qpic.cn/mmbiz_jpg/PtoJIOrbNiciaOrg1q1MXf2V2hMiaSO7KT3Upv7mKd7I02Aq8XMBpuOuTU2tgswc7E8CD3LAARTIEkezkib3FKzA6w/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1
這樣是可以成功的。
但是:
https://mmbiz.qpic.cn/mmbiz_jpg/BLMSxng5Qsxjkic5dqouFlOc5CnDLmQEicFZk2BkVo0vn22FgkoVNrhOjQq27VNe50PPmvuAqDh0G6icic6G0Q3EYQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1
就采集不到。
為了避免除微信外其它網站也能通用,最好加個if判斷吧($url 是圖片地址):
//微信圖片圖片地址 https://mmbiz.qpic.cn/... 需要把https換成http,否則防盜鏈無法通過 if(stripos ($url, '.qlogo.cn')!==false || stripos ($url, '.qpic.cn')!==false) { $referer = 'https://mp.weixin.qq.com'; $httpUserAgent = $_SERVER['HTTP_USER_AGENT']; $url = str_replace ('https://','http://', $url); }
以上就可以了。
上面的方法是把微信圖片抓取到自己的服務器圖片目錄下,如果您不想抓取,只想顯示微信圖片,不妨試試下面2種方式:
這兩種方法我沒試過,您自己測試。
1、借助跳板方式。
借助跳板,直接在圖片鏈接前加上http://read.html5.qq.com/image?src=forum&q=5&r=0&imgflag=7&imageUrl=
例如,
http://read.html5.qq.com/image?src=forum&q=5&r=0&imgflag=7&imageUrl=http://mmbiz.qpic.cn/mmbiz_jpg/FmzqiasicEHF7rOXSZvVu5aibubKtpU4Sc78DRUwsjw3hZDxjJngLXug9o92pXA8FkcUAuiaZHk6XEI3eMGRbwIOPQ/0?wx_fmt=jpeg
2、借助了js,在iframe中加載了圖片。
我的應用場景是這樣的,我爬取了一些微信文章,需要把這些文章在自己的網站上展現,包括微信文章中的圖片。
首先,js腳本,遍歷微信文章中的圖片,放到iframe中:
其次,我寫了點小樣式,讓整體布局稍微整齊看得順眼一些,在每個iframe中也寫了一些樣式。
這樣,我們想要的結果也就出來了。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/5025.html