python3 图片referer防盗链的实现方法


Posted in Python onMarch 12, 2018

本篇文章主要破解referer防盗链技术

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('//h2[@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!')

另外给大家推荐一个很好的抓包工具wireshark,我就是通过wirshark抓包分析后得到的referer信息。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
深入学习python的yield和generator
Mar 10 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
Oct 07 Python
Python 机器学习库 NumPy入门教程
Apr 19 Python
python中import与from方法总结(推荐)
Mar 21 Python
python实现超市商品销售管理系统
Oct 25 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
Mar 10 Python
Python读写操作csv和excle文件代码实例
Mar 16 Python
python对XML文件的操作实现代码
Mar 27 Python
Python 多进程原理及实现
Dec 21 Python
深入理解Python变量的数据类型和存储
Feb 01 Python
python实现不同数据库间数据同步功能
Feb 25 Python
Python Pandas pandas.read_sql函数实例用法
Jun 21 Python
tensorflow构建BP神经网络的方法
Mar 12 #Python
Python管理Windows服务小脚本
Mar 12 #Python
python实现教务管理系统
Mar 12 #Python
python编写弹球游戏的实现代码
Mar 12 #Python
python学生管理系统代码实现
Apr 05 #Python
python图书管理系统
Apr 05 #Python
怎么使用pipenv管理你的python项目
Mar 12 #Python
You might like
用php实现的下载css文件中的图片的代码
2010/02/08 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
php基于GD库画五星红旗的方法
2015/02/24 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
2016/05/16 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
JavaScript入门学习书籍推荐
2008/06/12 Javascript
js下用gb2312编码解码实现方法
2009/12/31 Javascript
javascript中强制执行toString()具体实现
2013/04/27 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
Javascript 判断两个IP是否在同一网段实例代码
2016/11/28 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
Python基础知识_浅谈用户交互
2017/05/31 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
Python数据集切分实例
2018/12/08 Python
python 读取修改pcap包的例子
2019/07/23 Python
Python使用psutil获取进程信息的例子
2019/12/17 Python
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
Schutz鞋官方网站:Schutz Shoes
2017/12/13 全球购物
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
农场厂长岗位职责
2013/12/28 职场文书
十佳班主任事迹材料
2014/01/18 职场文书
《三峡》教学反思
2014/03/01 职场文书
厨房管理计划书
2014/04/27 职场文书
营业员岗位职责
2015/02/11 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android