您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關怎么在python3中利用referer實現圖片防盜鏈,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
python的五大特點:1.簡單易學,開發程序時,專注的是解決問題,而不是搞明白語言本身。2.面向對象,與其他主要的語言如C++和Java相比, Python以一種非常強大又簡單的方式實現面向對象編程。3.可移植性,Python程序無需修改就可以在各種平臺上運行。4.解釋性,Python語言寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序。5.開源,Python是 FLOSS(自由/開放源碼軟件)之一。
referer防盜鏈技術:
referer防盜鏈技術是服務器通過檢查客戶端提起的請求包內的referer字段來阻止圖片下載的,如果referer字段錯誤,服務器會跳到另一個地址,這將導致錯誤的圖片下載。
上面已經了解到了referer防盜鏈技術,下面直接上代碼。
(我用的是python3,需要用到requests,html非系統包
下載方法:用python中的pip下載即可)
import urllib.request import requests import time import os import shutil from lxml import html def getPage(): ''''' 從網站首頁獲取妹子的網址 ''' fres=open('res.txt','w') htm=urllib.request.urlopen('http://www.mzitu.com/') out=htm.read() out=html.fromstring(out) urls=[] for res in out.xpath('//ul[@id="pins"]/li/a/@href'): urls.append(res) for r in urls: fres.write(r) fres.write('\n\r') fres.close() return urls def getPiclink(url): ''''' 獲取一個妹子的標題和她的所有圖片地址 ''' i_headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0'} sel=urllib.request.Request(url, headers=i_headers) #使用代理瀏覽器訪問網站 sel.add_header('Referer', 'http://www.mzitu.com/') #將referer字段添加到請求包里 sel=urllib.request.urlopen(sel).read() sel=html.fromstring(sel) total=sel.xpath('//div[@class="pagenavi"]/a[last()-1]/span/text()')[0] title=sel.xpath('//h3[@class="main-title"]/text()')[0] jpglist=[] for i in range(int(total)): link='{}/{}'.format(url, i+1) s=html.fromstring(urllib.request.urlopen(link).read()) jpg=s.xpath('//div[@class="main-image"]/p/a/img/@src')[0] jpglist.append(jpg) return title,jpglist def downloadJpg(title,piclist,link): ''''' 下載getPiclink()獲取到的妹子的圖片 ''' k=1 count=len(piclist) dirname=u"[%sP]%s" %(str(count),title) if os.path.exists(dirname): shutil.rmtree(dirname) os.mkdir(dirname) i_header={} i_header['Referer']=link #將getPiclink()獲取到的妹子的首頁網址作為referer字段的值 for i in piclist: filename='%s/%s/%s.jpg' %(os.path.abspath('.'),dirname, k) with open(filename,'wb') as jpg: jpg.write(requests.get(i, headers=i_header).content) #將referer字段添加到請求包里并下載圖片 time.sleep(0.5) k+=1 if __name__=='__main__': for link in getPage(): title,pic=getPiclink(link) downloadJpg(title,pic,link) print('OK!')
上述就是小編為大家分享的怎么在python3中利用referer實現圖片防盜鏈了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。