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实现的检测web服务器健康状况的小程序
Sep 17 Python
Python内置函数Type()函数一个有趣的用法
Feb 18 Python
Python中列表的一些基本操作知识汇总
May 20 Python
python实现汉诺塔递归算法经典案例
Mar 01 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
Aug 21 Python
python发送邮件脚本
May 22 Python
利用Python进行数据可视化常见的9种方法!超实用!
Jul 11 Python
Python中垃圾回收和del语句详解
Nov 15 Python
Python threading的使用方法解析
Aug 28 Python
flask框架配置mysql数据库操作详解
Nov 29 Python
Django 用户登陆访问限制实例 @login_required
May 13 Python
详解python爬取弹幕与数据分析
Nov 14 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合并数组+与array_merge的区别分析
2010/08/01 PHP
精美漂亮的php分页类代码
2013/04/02 PHP
JS target与currentTarget区别说明
2011/08/28 Javascript
jquery无缝向上滚动实现代码
2013/03/29 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
jQuery实现文字自动横移
2017/01/08 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
2017/01/17 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
Vue组件tree实现树形菜单
2017/04/13 Javascript
解决Angular4项目部署到服务器上刷新404的问题
2018/08/31 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
layui实现显示数据表格、搜索和修改功能示例
2020/06/03 Javascript
[39:11]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第二局
2016/02/28 DOTA
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
2018/03/15 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
django使用JWT保存用户登录信息
2020/04/22 Python
使用Python实现批量ping操作方法
2020/05/06 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
python调用有道智云API实现文件批量翻译
2020/10/10 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
python 基于opencv 绘制图像轮廓
2020/12/11 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
Linux常见面试题
2016/10/04 面试题
工程力学专业毕业生求职信
2013/10/06 职场文书
美国探亲签证邀请信
2014/02/05 职场文书
2014年教师节演讲稿
2014/09/03 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
争做文明公民倡议书
2019/06/24 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS