今天在网上看到有人在试用google的图片搜索功能,我也试了一下。
发觉只能搜索出图片内容处于同样布局的照片,效果如下。
不过,我想这个功能可能可以用在搜索同样内容的照片,比如经剪辑过后的照片,想找原始照片(比如去除水印等)时,也许能派上用场。
前面在《Firefox有bug啊!!!》中,我提到了我有一个困惑:为何我的程序在Firefox不正常?但在IE下正常?
大家会看到我的博客里是时不时加点google广告的吧?没办法,想赚点小钱维持家用~
我的策略是:如果有图片尺寸大于150*60,则不显示广告,否则就插入广告。这个程序看起来设计得很完美,在IE下非常正常。但后来,我意外地发现Firefox下有时会失效,但奇怪的是,Firefox并不报错。这是怎么回事呢?
大家都知道,透明的图片格式只有gif和png(最新支持的,而且能操作透明度,但IE6,IE7比较白痴,竟然不支持)。有时候,想做一个图,作为签名档。此时如果有背景颜色的存在,就不好看了,所以我们必须是透明图片。这样才能透下去,显得不突兀。
但不是每个人手头都有Photoshop啊,Fireworks之类的图像编辑软件。怎么办呢?
没关系,如果你只是想将一些文字啊,简单的东西做成透明图像的话,我告诉你有一个好方法:用Excel来实现。
谈到批量下载,你能想到什么?我猜你第一个想到FlashGet。还有人说什么?迅雷?呵呵,看来我们不是同一年代的人。如果你不会使用FlashGet的批量下载功能,请Google一下。我今天不是来讲FlashGet的批量下载功能的。不过,还是简单地带一笔,放一张图上来。它的缺点是要出现有规律的URL。
接下来,我们来假设一下,你打开一个页面,里面全部是漂亮的图片,你很喜欢,想把它们全部下载下来。怎么办?
有三种方法:
1)FlashGet的站点资源器功能。
2)Firefox + CacheView插件。
3)Wget命令行下载。
1)FlashGet的站点资源器无疑是个很强大的功能,但却带有两个缺点:a) 只能使用HTTP/FTP打头的协议。这对本地的HTML文件带来了不方便。不过,我们可以把文件上传到网上。b) 对DHTML支持不好,毕竟DHTML太复杂了。普通的HTML比较容易。使用方法很容易,按F7,跳至站点资源管理器,输入URL,右侧窗口中会出现该网页中所使用的资源,按文件类型或URL排序,挑图片下载就可以了。
常常在一些网站上下载某软件时,会提示“请不要盗链”之类的警告,然后就自动跳回该网站的首页上去了。至少我是经常碰到这种情况的,明明是从google上搜索到后链上去的,却提示我不要盗链,觉得很可笑,也很无奈。
其实对策也很简单,临时关掉Norton Internet Security(简称为NIS),重新刷一遍这个页面,就能正常下载了。其中的原因是什么呢?我猜想有一种可能是该网站用了cookie认证。但是如果关掉NIS,只要打开一次这个页面,也能下载,说明这不是通过cookie验证的(对WEB/HTTP不太懂的朋友,其中的原因可能一下子听不太懂)。
还有一种可能是什么呢?是HTTP_REFERRER(由于初期开发人员的拼写错误,这个词在一部分学科中仍被称作HTTP_REFERER。即,少了一个R)。中文可以称作“引用页”。即,验证你先前是从哪个页面上来到当前这个页面的。NIS里面是有这方面的拦截技术在里面的,所以HTTP_REFERRER信息在跳转时被NIS强行截掉了。于是造成了对方判断你是直接下载该软件,而不是通过先打开某网页,然后点击链接下载软件的做法。
这是一些网站防盗链的做法,由此也看出是一种很失败的做法(对使用NIS的用户来说,非常麻烦,只能通过临时禁用NIS的方法解决)。
再举一个例子:www.r-file.com。这是一个日本色情网站。比如,打开 http://www.r-file.com/free/view.php?ID=r233&P=0&N=01.jpg ,如果你打开这个网页,可以看到一张图片。右键点击一下,得到图片的URL为: http://www.r-file.com/free_photo/r233/sample/1/01.jpg 。但是,如果你按这个得到的图片URL重载一遍的话,你会得到一个出错的代码:Forbidden: You don't have permission to access /free_photo/r233/sample/1/01.jpg on this server. 匪夷所思吧?嘿嘿。其实这里面就是HTTP_REFERRER在搞鬼,对方网站开了HTTP_REFERRER验证处理。这也是图片下载防盗链的做法。
下面谈谈如何突破这种防盗链技术。既然问题的根本原因已经找到了,对策也简单:发送HTTP_REFERRER。只可惜要实现这样的功能,一般的HTML/Javascript是办不到的。一、用PHP、Perl等专业的语言才可以达到。二、PHP、Perl之类的太专业,我们手头的一类软件也可以达到:FlashGet。迅雷之类的应该也可以。不过本人只支持FlashGet,毕竟FlashGet才是老牌的下载利器。
启动Flashget,打开“新建下载任务”页面,“网址”栏里填入“http://www.r-file.com/free_photo/r233/sample/1/01.jpg”,哈哈,点击OK。图片就可以下载了。但是,你有没有注意到“新建下载任务”页面的第二行“引用”栏里(这就是设置HTTP_REFERRER的地方),什么也没设置,为什么就成功了呢?这个你只要看一下FlashGet的日志就明白了。
Wed Nov 26 20:34:24 2008 已连接.
Wed Nov 26 20:34:24 2008 GET /free_photo/r233/sample/1/01.jpg HTTP/1.1
Wed Nov 26 20:34:24 2008 Host: www.r-file.com
Wed Nov 26 20:34:24 2008 Accept: */*
Wed Nov 26 20:34:24 2008 Referer: http://www.r-file.com/free_photo/r233/sample/1
Wed Nov 26 20:34:24 2008 User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)
Wed Nov 26 20:34:24 2008 Pragma: no-cache
Wed Nov 26 20:34:24 2008 Cache-Control: no-cache
Wed Nov 26 20:34:24 2008 Connection: close
Wed Nov 26 20:34:24 2008 HTTP/1.1 200 OK
看到了吗?FlashGet有自动添加HTTP_REFERRER的功能。自动添加引用页的功能也可以取消,虽然几乎没人会这么做。设置位置在“选项”->“协议”->“HTTP”部分->“发送引用页”。这个设置是默认是打开的。
另外提一下,将HTTP_REFERRER设置为http://www.r-file.com/free_photo/r233/sample/1和设置为http://www.r-file.com是相同的。不信你可以自己试试。这只证明访问该图片时是通过访问上述URL后才进行的,即都是来自www.r-file.com。这也是防盗链技术的来源。
最后提一下,本站的图片及软件下载也都是防盗链的。不过我的博客上没啥特别的东西,别盯住我了。有兴趣研究一下www.r-file.com吧。哈哈。




2011/06/19

