1. 程式人生 > >Python3爬蟲之圖片防盜鏈破解

Python3爬蟲之圖片防盜鏈破解

關鍵詞:python,圖片防盜鏈,破解

背景:
想要在自己的網站上直接使用XX網站的圖片連結,但是XX網站採用了圖片防盜鏈,自己的網站上無法直接使用。
圖片防盜鏈實現的原理:
圖片防盜鏈技術是指在通過連結訪問圖片時,檢查了圖片訪問請求的頭部資訊中的referer,如果請求中的referer資訊不滿足被訪問網站的設定則無法獲取圖片。
知道了原理後想辦法如何解決:
1. 將自己網站http升級為https:
因為https的訪問是經過加密的,所以如果自己的網站是https訪問的站點,那麼訪問他人網站圖片請求時,他人網站時無法取得請求頭部中的referer資訊的,這樣可以繞過referer的檢測(前提是被訪問網站允許沒有referer頭部資訊的請求訪問圖片,就比如瀏覽器直接鍵入圖片地址訪問,這樣的訪問是沒有referer資訊的,所以使用本方法之前,確認使用圖片防盜鏈的網站,是否可以直接在瀏覽器中鍵入圖片連結訪問到圖片,如果可以,該種方法是有效的)。
2. 使用代理:
有一些代理網站可以解決圖片防盜鏈的問題,將圖片連結發給代理網站,代理網站會返回圖片,一般如

http://xxxxxx.com?imgurl=http://yyyyyy.com/image.jpg,這樣的訪問。
三.自己寫代理:
自己並沒有找到一個能用的代理網站所以只能自己寫一個,因為自己的網站是使用Django搭建的,所以語言使用的Python,這樣就用爬蟲構建訪問請求,手動構建referer資訊,抓取圖片連結的圖片資料,並將資料放回給訪問的瀏覽器,程式碼如下:

def proxyimg(request):  
    if request.method == 'GET':  
        url = request.GET['imgurl']  
        u = urllib.urlopen(url)  
        return
HttpResponse(u.read(), content_type='image/jpeg')

這樣訪問使用圖片防盜鏈的圖片就用自己的伺服器中轉下從而獲取到圖片資料。