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 的 with 语句详解
Jun 13 Python
详解在Python中处理异常的教程
May 24 Python
独特的python循环语句
Nov 20 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
Dec 12 Python
TensorFlow用expand_dim()来增加维度的方法
Jul 26 Python
windows下python 3.6.4安装配置图文教程
Aug 21 Python
使用Python快速制作可视化报表的方法
Feb 03 Python
对python读取zip压缩文件里面的csv数据实例详解
Feb 08 Python
python3使用GUI统计代码量
Sep 18 Python
Python异常模块traceback用法实例分析
Oct 22 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
May 22 Python
聊聊python在linux下与windows下导入模块的区别说明
Mar 03 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
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
PHP读取、解析eml文件及生成网页的方法示例
2017/09/04 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
关于php unset对json_encode的影响详解
2018/11/14 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
让Firefox支持event对象实现代码
2009/11/07 Javascript
解析使用JS 清空File控件的路径值
2013/07/08 Javascript
js实现rem自动匹配计算font-size的示例
2017/11/18 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
jquery分页插件pagination使用教程
2018/10/23 jQuery
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
微信小程序如何自定义table组件
2019/06/29 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
用Python进行基础的函数式编程的教程
2015/03/31 Python
python 中xpath爬虫实例详解
2019/08/26 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
推荐8款常用的Python GUI图形界面开发框架
2020/02/23 Python
Python多线程多进程实例对比解析
2020/03/12 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
美国温暖商店:The Warming Store
2018/12/15 全球购物
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
会计专业应届生自荐信
2014/02/07 职场文书
工作会议主持词
2014/03/17 职场文书
咖啡店创业计划书
2014/08/15 职场文书
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
机动车交通事故协议书
2015/01/29 职场文书
教师岗位职责范本
2015/04/02 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
学术会议开幕词
2016/03/03 职场文书
Python语言中的数据类型-序列
2022/02/24 Python
Python闭包的定义和使用方法
2022/04/11 Python