2007年6月7日 星期四

抓圖的技術(Grab Picture)

由於網路的盛行,無論是blog還是現在流行的YouTube,在網路上都有許多的檔案或圖片在以各種方式在分享

經常會看見各大網站會有許多美麗的圖片,很多人都有收集美圖的習慣,但是經常會發現沒有辦法把圖抓下來,在這裡先略過著作權的爭議,而只是討論技術的部份,所以接下來的討論都是針對圖片本身沒有版權問題,可別亂以身試法!

要說怎麼抓圖就要先提到有那些常見的防範技術,用在保護圖片上

1. 鎖右鍵:因為絕大部份的人都是用右鍵來另存圖片
2. 利用資料庫:無法直接抓取的到資料庫的路徑,所以抓圖會有困難
3. 改變副檔名:令人無法直接搜尋出該圖檔的正確位置
4. 加上浮水印:這應該算是一種玉石俱焚的方法,但是保有原圖的人可用

以筆者的經驗來說,除了浮水印之外,其它圖片保護都有對應的方式抓取,不過也可分為全靠軟體,或是軟體與技術各半,甚至有些方式連軟體都不用,就可以輕鬆破解(其實只要是會用保護的人一定也會解...)

全靠軟體的部份,應該也不用筆者多說,想想最早無名相簿大紅大紫的同時,因為該網頁就有鎖右鍵+利用資料庫的方式來保護圖片,所以就有許多打著可以抓取無名相簿的軟體出現(例:抓圖王...等軟體,去Google上找就有一堆,所以我不再贅述)

這一類抓圖軟體,其實絕大部份都是用類似暴力法去try出真實路徑,一但有人試出來了,這個網站的資料庫結構就等於被破解了!只差時間的長短而已,而且這一類的軟體使用方便,應該很多人都有試過吧!

那軟體與技術各半的呢?

其實說穿了這一點也很簡單,應該很多人的電腦裡都有類似Flashget的續傳軟體吧!筆者就曾經試過用這一類的軟體能夠抓到原圖,因為就算鎖了右鍵,注意一下你們用的瀏覽器(IE、FIREFOX...等)都有一行狀態列

通常都在最下方,一但你把游標指向該圖片,就會顯示出該圖的路徑,接下來就只要把該路徑輸入到續傳軟體,就可以直接抓取到該圖片了,甚至還可以利用續傳軟體的批次下載,猜測可能的相片編號方式一網打盡,所以真是防不慎防

再來,破解鎖右鍵的方式其實有很多:

1. 更換瀏覽器:因為很多鎖右鍵的語法,只在IE生效,換FIREFOX就迎刃而解
2. 技術欺騙:先按住右鍵不放,當它跳出不可以按右鍵的畫面出現後,先用左鍵確定(右鍵不放開),等禁止右鍵的視窗消失後,再放開右鍵,如此一來就可以出現原有另存圖片的選項,這也是一種欺騙瀏覽器的方法喔!
3. 更改設定:直接把IE能夠執行許多程式語法給停用
工具-->網際網路選項-->安全性,工具-->管理附加元件

以上是常見破解鎖右鍵的方法,提供大家參考,再次聲明別拿來做壞事喔!

更改副檔名又是怎麼一回事呢?

其實筆者最早是在國外的某些網站上看見的,其實當看見一個網頁,也可以利用最笨的方式來找尋該網頁圖檔的真實路徑(利用資料庫或CSS語法者無效),那就是直接檢視該網頁的原始碼,只要稍稍搜尋一下*.JPG、*.GIF或*.PNG應該就能找到不少

不過這個方法,我卻在該網站失效了,我苦思右想,只好用土法鍊鋼的方式,大家應該知道所有從瀏覽器讀入的網頁,都會有一份TEMP檔在本機的電腦裡吧!

所以筆者就直接把網頁的暫存檔全部清除(包括離線瀏覽的內容),然後直接開啟該網頁,等全部內容都顯示出來後,去暫存檔的資料夾(預設在C:\Documents and Settings\"USERNAME"\Local Settings\Temporary Internet Files)中比對資料

其實一樣就能發現出有很多副檔名不詳,但是檔案卻比其它檔案來得大出許多的檔案(因為網頁上資料量最大的應該就是圖檔或其他多媒體檔案),不過這一類的檔案名稱,經常是一連串的英數混合而成

只要稍稍把那些副檔名不明的檔案改成圖型的副檔名(*.JPG...等),再利用看圖軟體點開,就會發現另外一片新世界,我原先也很不可置信,竟然還有這種方法,不過後來仔細想想,只要在網頁伺服器的設定上動點手腳,應該要做到類似的成果應該也不難(恕筆者沒時間實作,唉...)

以上就是在網頁上抓取圖片的方法,僅供參考,如有疑問再一起討論吧!

其實...如果不在乎是否要較高畫質的原圖,還有一個最簡單的方法,那就是利用「Print Screen」的功能鍵,來做畫面上的快照,一樣也能夠把圖抓下來,只是礙於螢幕顯示的解析度,頂多就是72dpi的圖片吧!

24 則留言:

  1. 哈哈
    謝了謝了
    這個我用得到~~~
    感謝分享!!

    回覆刪除
  2. 這是一定要的呀!
    總是要服務一下大家嘛!
    這一篇應該很多人都可以用吧~~
    哈哈取之於網路用之於網路呀!
    愛美麗加油吧~老師好...(備課辛苦呀!)

    回覆刪除
  3. 你跟Attila 這些文章久了應該都可以出書啦~
    夾油夾油

    回覆刪除
  4. 哈!我不敢想太多啦!
    就當做是自己的工作筆記..
    不敢想太多,旁邊一堆EDITOR的地方
    哈...

    回覆刪除
  5. 我不抓圖已經很久了...

    回覆刪除
  6. 一般來說,我也很少抓圖了!
    不過這種技術還是學著備用吧!
    誰知道那天誰誰誰又需要時
    又再來想辦法,那也是件棘手的事呀!
    不是嗎?哈哈...

    回覆刪除
  7. 感謝Mark老兄提供這麼多的好方法,
    應該沒有什麼圖抓不到的了!!

    回覆刪除
  8. 沒有什麼圖抓不到喔!
    其實還是有一種圖我還沒有研究出來
    不過技術應該類似於浮水印吧!
    就是很多網站的電影劇照
    最下方不是會寫xxx所提供嗎?
    你抓下來時,會發現沒有那些字樣
    但是一但在post上網時,就有會跑出來
    我想應該是類似那種圖的加密技術吧!
    我也還不確定,等我那天想不開去研究
    再上來跟大家分享!

    回覆刪除
  9. 想挑戰自己的抓圖技術管不管用,那就去 Play Boy 網站試試,絕對會激發出鬥志和新的抓圖技巧!

    回覆刪除
  10. 要去playboy的網站試功力喔!
    這一點我要仔細想想
    雖然有美圖(我還是比較愛亞洲人)
    但是花了時間把圖抓下來要做啥?
    分享?供人觀看...??

    對了!插花一下忘了說還有一種保護機制
    那就是用flash包起來...
    這樣的話可能就要請玩flash的高手來解答
    就算可以抓到swf,要怎麼把原圖給弄出來那也是很難的部份!(有相關軟體號稱可以轉成分鏡圖)

    (小聲說:attila大大麻煩您先試抓個幾張來看看吧!哈...)

    回覆刪除
  11. 從flash裡弄出原圖...呵呵,
    1.首先你會需要flashget這個flash影片下載工具,把swf檔案下載下來.
    2.使用swf反解破譯程式ex.碩思閃客精靈...
    以上軟體請用孤狗大神搜索
    3.使用反解把swf反解成.fla格式
    4.用flash編輯程式ex.flash mx 2004. flash 8打開.fla
    5.進入flash檔尋找圖形元件...導出
    6.收工..

    路過的猴子

    回覆刪除
  12. 哈哈!
    你說的這種方式,我以前玩過
    甚至還有類似的軟體(FREEWARE)
    只是真的要這樣子費時間把SWF抓下來
    而且SWF反解FLA經常會有支離破碎的狀況
    所以久了我也沒有再玩了

    這告訴我們!
    做任何事都是需要有"動機"
    哈哈~對嗎?路過的猴子...

    回覆刪除
  13. >>(我還是比較愛亞洲人)
    我也是...XD

    回覆刪除
  14. 哈...有人跟我一樣~
    愛亞洲人的啦!嘿嘿

    不過....今天的blog還沒寫...
    因為再跟硬體和linux作戰..

    還加上了一個rsync+ssh (公鑰應用)

    晚一點有時間的話再補今天的東西喔~"~
    從上班弄到下班...>_<|||

    回覆刪除
  15. Hmmm.... rsync+ssh呀,要搞異地備援了嗎?

    也就是把從公司捉的...(消音)...自動備援到自己家裏這樣。

    真是神秘呀,呵呵~

    回覆刪除
  16. 沒有啦!!
    從公司抓到家裡!
    這是一種頻寬的考量
    而且我也沒有想過在公司抓東西(笑)

    vincent大大!別嚇我呀!
    哈哈~~我沒這麼大能耐...

    回覆刪除
  17. 初見標題, 還以為是多深奧的抓圖技術, 原來只是抓網站上的圖喔? 新的保護方法是用Flash包起來, 讓圖檔的真實Url不讓你有機會看到, 且不暫存圖檔到硬碟; 至於抓AP或Windows畫面的圖的方法, 抓HDC的方式我會了, 但抓DirectX或OpenGL的方法, 目前個人研究遇到瓶頸 (相關dll檔的樣品不足, 故抓圖程式寫不下去了), 如果願意技術交流的話,再用MSN敲我 playercd8@hotmail.com

    回覆刪除
  18. ㄟ...

    筆者因為本身對於程式方面較為薄弱
    可能沒有辦法提供你什麼相關的技術交流

    因為你說是個人研究,不然的話你指的那種可以抓取抓DirectX或OpenGL上的圖片,其實上google上找,可以找到一大堆相關軟體可以應用(GM遊戲修改大師、HyperSnap...好像都有類似的功能)

    只於那種包在flash的應用技術,現在也挺多的,甚至連整個看圖的toolbar都是用flash弄出來的,我也還沒想到怎麼處理...>_<|||

    回覆刪除
  19. 包進Flash裡的顯示的圖, 如果不是單純的包進Flash的話, 那就得先反轉Flash之後(有一個叫做Sothink SWF Decompiler的工具), 再進去看裡頭的Script是怎麼寫的? 我曾經試過這樣進去追裡頭的圖檔的真正Url過; 至於DirectX與OpenGL抓圖, 我是去年學到了Hook API與COM的方法, 可是缺相關dll樣本, 所以程式寫不下去了 (原理是先提高自己AP在Windows的權限, 再值入自己的dll到他人ap的記憶體可視範圍內, 再把他人ap去呼叫DirectX或OpenGL的地方, 給搶過來, 這樣的話, 所有由他人AP去Call DirectX或OpenGL的地方都可以傳過去的東西接收下來了)

    回覆刪除
  20. http://p1ayer.spaces.live.com/blog/cns!2BC2D8BEFECDA9CF!289.entry

    這是最近一次的個人心得
    go2web的各網站的logo圖,最後雖有找到放的位置了, 但沒找到各網站的超連結到底放在那裡; 本來想挖來改改Flash自己用的, 最後只好先作霸了

    回覆刪除
  21. DirectX 與OpenGL下的AP, 大多具有多緩衝區翻頁的機制, 而GDI抓HDC的方法, 只能在DirectX 與OpenGL剛好翻頁到GDI的Surface時使用, 不然會抓不到圖; 我以前寫的那隻抓圖程式的半成品, 其中有一個功能是連續抓圖自動存成MPEG檔的樣子, 可是遇到DirectX 與OpenGL下的AP, 就變成抓出的動畫, 一直閃了(因為抓到全黑)

    回覆刪除
  22. 你所說的Sothink SWF Decompiler軟體,我也有使用過,它是能夠把flash反解成原本的模樣(並不完全...),但是要從裡頭找到真實圖檔的url,也並非是件簡單的事,可能要花上一筆不算短的時間!

    http://p1ayer.spaces.live.com/blog/cns!2BC2D8BEFECDA9CF!289.entry
    ↑看來你對撰寫程式的部份很感興趣,這一點我可就比不上你,所以這部份筆者真的沒辦法多給你些什麼建言,而我也非科班出身(抱歉...),如果等我有接觸到這個層面時,希望再與你請益一番

    畢竟我只能分享給大家,我真的使用過,或是真的處理過的狀況,無論是軟硬體皆然

    對於程式撰寫的部份,可能還需要相關人士(當然也包括網路上的眾多高手)的大力協助,看了你說明對於DirectX與OpenGL抓圖原理,如果你再多嘗試,一定能夠找到訣竅的!

    筆者當然很希望能夠在此聽見你分享你的心得喔!多謝你的指教

    回覆刪除
  23. 抓filckr或各個網站的圖,我知道有一個工具叫做趣挖寶,雖然他的用途,可以很簡單的看youtube,imtv,無名,filckr....等的影片及圖片,不用辛苦的找半天,還找不到想看的.但他們有一個功能,是可以抓到影片及圖片的URL,便可以下載.是不錯用啦.可以試試!!網址應該是www.wawaqu.com 吧!!如果記錯了,你到google搜尋一下趣挖寶應該就找的到了吧!

    回覆刪除
  24. 其實現在線上影音跟圖片的盛行,相關的軟體也真的不少...

    多謝你提供不一樣的方向,其實重點還是應該要放在...為什麼要抓圖吧!?(哈...)

    現在就連某些新聞平台,連照片都是做成flash檔...= =+可能就是怕有人喜歡"借"來用,但是再怎麼防一樣也是防不了PRINT SCREEN呀!(如果對解析度要求不高的話...= =+)

    PS:下載任何軟體請先注意自身安全呀!!

    回覆刪除