偶然下载一种类型的资源,发现好多翻页,右键另存什么的,不胜其烦。

决定用python写几句代码搞定。核心代码如下:

from urllib import urlretrieve

from urllib import urlretrieve
urlretrieve(url,save_to_path,show_download_progress)

至于url,简单的用爬虫的思路得到的。非本文的重点,不再啰嗦。

问题来了,不知道为什么,下载的所有文件都是42k!

百思不得其解,应该是某种限制,脑袋不灵光,想了半天才想到,应该是防盗链。

查了下,于是用wireshark模拟了一下,发现header参数太多,弄不好每个都要设(取决于人家网站的逻辑设计),于是不管三七二十一,先给射了个Reffer。

不幸的成功了。好吧,不用再研究了,收工,特记录之。

以上问题的解决方案:

import urllib2
req = urllib2.Request('http://www.example.com/')
req.add_header('Referer', 'http://www.python.org/')
resp = urllib2.urlopen(req)
content = resp.read()

接下来,只需要吧content写到文件里面去就好了,此处略。

完整demo如下:

import urllib2

req = urllib2.Request('http://61.164.149.80/ftp1/0905/models_z/1014/3.rar')
req.add_header('Referer','http://www.coolsc.net/3D-Details/2009/10/14/29468-0.htm')
resp = urllib2.urlopen(req)
content = resp.read()
f = open(r'D:\test2.rar','wb')
f.write(content)
f.close()

  

python 下载文件 & 防盗链的更多相关文章

  1. 【331】python 下载文件:wget / urllib

    参考:python下载文件的三种方法(去掉-) 方法一:wget import wget, os # 设置下载路径 os.chdir(r"D:/tmp") url="ht ...

  2. Nginx学习之如何搭建文件防盗链服务

    前言 大家都知道现在很多站点下载资料都是要收费的,无论是积分还是金币,想免费只能说很少很少了,那么这些网站是如何做到资源防盗链的呢? 这里推荐一款比较容易上手的神器,Nginx本身提供了secure_ ...

  3. Nginx防盗链的3种方法 文件防盗链 图片防盗链 视频防盗链 linux防盗链

    Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性: 在高连接并发的情况下,Nginx是Apache服务器不错的替代品,目前Web服务器调查显示Apache下降Ngni ...

  4. python下载文件的三种方法

    Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件.此外Python还提供了另外一种方法 ...

  5. python下载文件(图片)源码,包含爬网内容(爬url),可保存cookie

    #coding=utf-8 ''' Created on 2013-7-17 @author: zinan.zhang ''' import re import time import httplib ...

  6. Asp.net 图片文件防盗链介绍

    想要实现文件放盗链的功能 首先添加一个全局文件 Global.asax 在 Application_BeginRequest中我们可以判断Http报文头中的UrlReferre是否来源本站. if ( ...

  7. python爬虫学习--防盗链

    一 首先要了解什么是盗链 盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务商的服务内容,骗取最终用户的浏览和点击率. ...

  8. python下载文件的方法

    前一段时间是爬文字,最近准备爬图片 找到了两种保存文件的方法 一种是用urllib.urlretrieve方法 #-*- coding: utf-8 -*- import urllib def cal ...

  9. 使用Python下载文件

    python -c "with open('/tmp/file.sh', 'wb') as f: import urllib2; f.write(urllib2.urlopen('http: ...

随机推荐

  1. Bootstrap3.0学习第十一轮(输入框组)

    详情请查看http://aehyok.com/Blog/Detail/17.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:ht ...

  2. 第二课:判断js变量的类型以及domReady的原理

    1.类型的判断: js五种简单数据类型有:null,undefined,boolean,number,string. 还有复杂的数据类型:Object,Function,RegExp,Date,自定义 ...

  3. Opentack常用技巧

    这篇博客将收集一些openstack里的使用技巧. 1. which dhcp agent is hosting the network?   2. 各个网桥port命令规则 grep for por ...

  4. Jquery-获取子元素children,find

    1.查找子元素方式1:> 例如:var aNods = $("ul > a");查找ul下的所有a标签 2.查找子元素方式2:children() 3.查找子元素方式3 ...

  5. Java算法-各种题目总结

    1.排列计算 /*[程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子 ...

  6. PR 不能手动修改素材尺寸的解决方法

    选中素材,然后再特效控制台那边点击一下运动就可以在预览窗口直接用鼠标调整画面大小和位移了.

  7. 【UVA 11401】Triangle Counting

    题 题意 求1到n长度的n根棍子(3≤n≤1000000)能组成多少不同三角形. 分析 我看大家的递推公式都是 a[i]=a[i-1]+ ((i-1)*(i-2)/2-(i-1)/2)/2; 以i 为 ...

  8. load and initialize

    NSObject是一切OC类的基类,所以我们必须对NSObject所有的方法有一个清楚的认识. + (void)load; 当类或者分类被加入到runtime时,load方法会被调用,也就是说在mai ...

  9. 德州扑克AI WEB版

    继续之前的德州扑克话题,上次的DOS界面确实没法看,我女朋友说这是什么鬼.哈哈,估计只有自己能玩了 这两天重构了一下界面,基于web服务器和浏览器来交互. 服务器和客户端之间用websocket通信, ...

  10. 【poj1201】 Intervals

    http://poj.org/problem?id=1201 (题目链接) 题意 给出n个区间${[ai,bi]}$,要求选出尽可能少的数,使得每个区间i中至少存在${c[i]}$个数. Soluti ...