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系列之新版本导入httplib模块报ImportError解决方案
May 23 Python
python使用str & repr转换字符串
Oct 13 Python
Python 逐行分割大txt文件的方法
Oct 10 Python
matplotlib绘制动画代码示例
Jan 02 Python
Python使用googletrans报错的解决方法
Sep 25 Python
Python 正则表达式爬虫使用案例解析
Sep 23 Python
python的scipy实现插值的示例代码
Nov 12 Python
基于Pytorch SSD模型分析
Feb 18 Python
Python+OpenCV图像处理——实现直线检测
Oct 23 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
Dec 07 Python
浅析python实现动态规划背包问题
Dec 31 Python
分享python函数常见关键字
Apr 26 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新手上路(十二)
2006/10/09 PHP
php ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
php将字符串转换成16进制的方法
2015/03/17 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
JQUBar 基于JQUERY的柱状图插件
2010/11/23 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
json属性名为什么要双引号(个人猜测)
2014/07/31 Javascript
详解Node.js项目APM监控之New Relic
2017/05/12 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
echarts多条折线图动态分层的实现方法
2019/05/24 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
微信小程序实现搜索功能
2020/03/10 Javascript
实例解析Python中的__new__特殊方法
2016/06/02 Python
python常用函数详解
2016/09/13 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
Python存取XML的常见方法实例分析
2017/03/21 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
python调用java的jar包方法
2018/12/15 Python
Python supervisor强大的进程管理工具的使用
2019/04/24 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
python 控制台单行刷新,多行刷新实例
2020/02/19 Python
python-地图可视化组件folium的操作
2020/12/14 Python
python 利用jieba.analyse进行 关键词提取
2020/12/17 Python
导出HTML5 Canvas图片并上传服务器功能
2019/08/16 HTML / CSS
舒适的豪华鞋:Taryn Rose
2018/05/03 全球购物
财务会计应届生求职信
2013/11/24 职场文书
小学生暑假感言
2014/02/06 职场文书
车队司机个人自我鉴定
2014/04/17 职场文书
股东合作协议书
2014/09/12 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
大二学生自我检讨书
2014/10/23 职场文书
2015年工程部工作总结
2015/04/30 职场文书
如何用JavaScript学习算法复杂度
2021/04/30 Javascript
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS