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

本篇文章主要破解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信息。

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

您可能感兴趣的文章:

  • 使用PHP破解防盗链图片的一个简单方法
  • IIS图片防盗链和下载的解决方案
  • 破解图片防盗链的代码(asp/php)测试通过
  • php 破解防盗链图片函数
  • 简单解决微信文章图片防盗链问题
  • Nginx图片防盗链配置实例
  • 基于ISAPI Rewrite软件实现IIS图片防盗链方法
  • php实现的网络相册图片防盗链完美破解方法
  • 详解iis httpd.ini中IIS图片防盗链的方法
  • php实现图片文件与下载文件防盗链的方法
(0)

相关推荐

  • 详解iis httpd.ini中IIS图片防盗链的方法

    一.创建目录 e:Rewrite 把 Rewrite 下的四个文件(httpd.ini .httpd.parse.errors.mtbnotif.dll.Rewrite.dll)上传到这里. 二.设置IIS属性,选择网站属性,到ISAPI筛选器, 关闭属性对话框. 再次查看网站属性,到ISAPI筛选器 如果看到状态为向上的绿色箭头,就说明Rewrite模块安装成功了. 点添加,在名称中输入rewrite,可执行文件选择刚才解压后的文件Rewrite.dll,点确定:再点确定, 三.修改 e:Re

  • 基于ISAPI Rewrite软件实现IIS图片防盗链方法

    下面的操作,可能引起用户的反感,如果访客想从你这个页面,保存个图片都是不能的,用户体验何在啊. 实施步骤: 1.下载比较出名的www.helicontech.com提供的ISAPI Rewrite软件的免费版本(免费版本虽然有一些功能上的限制,但是做防盗链足够了): http://www.isapirewrite.com/download/isapi_rwl_x86_0072.msi 2.设置软件安装目录的IIS_WGP组的读写权限(重要,如果不设置安装完后你的网站就会直接Service Una

  • 简单解决微信文章图片防盗链问题

    微信对外提供了API接口,让我们可以通过授权的方式获取到自己公众号里面的文章,或者你也可以通过爬虫去抓取微信的文章,但是微信的图片默认是不允许外部调用的 这里我找到了两种方案 第一种 在JS中提前把图片加载到本地,然后从本地缓存中读取图片 var showImg = function (url) { var frameid = 'frameimg' + Math.random(); window.img = '<img id="img" src=\'' + url + '?' +

  • php实现的网络相册图片防盗链完美破解方法

    本文实例讲述了php实现的网络相册图片防盗链完美破解方法.分享给大家供大家参考.具体如下: 网络相册图片防盗链破解程序 - PHP版 这个防盗链破解版可以完美破解当下比较流行的: 百度相册,网易相册,360我喜欢等网站图片. 还可以实现简单的图片防盗链. 因为这个类是先进行获取远程图片, 然后再把图片发送到客户端,所以,算是进行了两次流量的传送.因此,会浪费空间流量,接下来,会开发缓存功能,这样可以实现节约流量! <?php /** * 网络相册图片防盗链破解程序 - PHP版 * * 使用方法

  • 使用PHP破解防盗链图片的一个简单方法

    有自己的主机一般都会设计"防盗链", 其实包括图片防盗链,和下载防盗链等,如:1.使用.htaccess设置防盗链 复制代码 代码如下: RewriteEngine onRewriteCond %{HTTP_REFERER} !^$RewriteCond %{HTTP_REFERER} !^http://(www\.)?jb51.net/.*$ [NC]RewriteRule \.(gif|jpg)$ http://www.jb51.net/image.gif [R,L] 2.ngin

  • php实现图片文件与下载文件防盗链的方法

    本文实例讲述了php实现图片文件与下载文件防盗链的方法.分享给大家供大家参考.具体分析如下: 在php中最简单的防盗链办法就是利用php的$_SERVER['HTTP_REFERER']函数来操作了,但是此方法不可靠,我们最终还是需要使用apache,iis来进行操作的,具体的操作方法如下: php防盗链: 复制代码 代码如下: <?php session_start(); session_register('check'); $_SESSION['check']=true; ?> 检查ses

  • 破解图片防盗链的代码(asp/php)测试通过

    php版的代码比较简单: 复制代码 代码如下: <?php $p=$_GET['p']; $pics=file($p); for($i=0;$i< count($pics);$i++) { echo $pics[$i]; } ?> 使用方法:将文件保存成i.php上传到根目录 将不能外链的图片地址改成http://你的域名p.php?p=图片地址 asp版,网上用的比较多的 复制代码 代码如下: <% Dim url, body, myCache url = Request.Que

  • Nginx图片防盗链配置实例

    做运维的朋友经常会有一些烦恼,比如网站总是被人抄袭,比如网站总是被人引用上面的图片,虽然一张图两张图,并不耗费很多流量,但一旦引用的人多了,这个还是比较废流量的. 防盗链就是禁止其他网站引用自己网站资源而做的一系列设置,优点就不需要说了,绝多数就是防止资源浪费,特别是有宽带.流量限制的空间如果不做一些 限制可能就光引用自己网站图片.视频等等资源可能会消耗很大一部分流量.本文就简单的说一下在nginx服务器上如何做防盗链设置. nginx防盗链代码 第1步:下载nginx网站配置文件. 有些网友可

  • php 破解防盗链图片函数

    复制代码 代码如下: <?php $url=$_GET['url']; $ext=pathinfo($url,PATHINFO_EXTENSION); if($ext!='jpg' && $ext!='gif'){ // 只支持jpg和gif readfile('/upload/20081209130557536.gif'); exit; } $file=md5($url).'.'.$ext; if(file_exists($file)){ readfile($file); exit

  • IIS图片防盗链和下载的解决方案

    在要启用Rewrite的IIS站点的Isapi上添加这个筛选器 筛选器名称Rewrite 可执行文件选择 c:\Rewrite\Rewrite.dll 即可以了 httpd.ini是配置文件 图片防盗链代码 复制代码 代码如下: [ISAPI_Rewrite] # 3600 = 1 hour CacheClockRate 3600 RepeatLimit 32 # Protect httpd.ini and httpd.parse.errors files # from accessing th

随机推荐