转载这篇文章,其实我想讲的是LUA,这个非常有名的脚本语言,在这里,作者用它来模拟浏览器的行为,这在我们的日常生活中也是经常要碰到的,举个例子,一个页面上有个PDF要下载,夸张点被分割成了100份,你怎么办?一个一个点?当然不是,任何一个真正的程序员都会发挥它那懒惰而又爱动脑筋的品质,这里,LUA给了我们一个示范的解决方案,在以后的网络生活中碰到这样的问题,如何去解决。--------------------------------------------------------------------------------------
导读:
喜歡抓電子書的人應該都知道 ITPub 這個網站,可是他的下在方式需要圖片驗證,而且檔案分割又多
如果能夠循序幫你抓檔該有多好
最近發現 FreeGrab 這套軟體,他是一套可透過撰寫 Lua 腳本來模擬瀏覽器得操作,因此我嘗試撰寫了抓取 ITPub 電子書的簡易 Lua 腳本,順便學習一下 Lua 語言。
首先要說明一下,我測試的 FreeGrab 版本為 1.2.3.3 Build 071025。以下是 ITPub 的 Lua 腳本
MODULE_NAME = "ITPub"
MODULE_VERSION = "0.0.1"
MODULE_REQUIRE_VERSION = "1.2.3.3"
MODULE_AUTHOR = "cwchiu@hotmail.com"
MODULE_LAST_UPDATE = "2007/12/09"
-------------------------------------------------------------------------
--main
-------------------------------------------------------------------------
function Main()???
local url = GetUrl()
local username = '你的帳號'
local passwd = '你的密碼'
AddFormField("login_name", username)
AddFormField("password", passwd)
AddFormField("furmcookie", '30')
AddFormField("ts", '1197393424')
SetReferer(url)
PostForm('http://sso.itpub.net/Login')
if url:find( "itpub%.net/attachment%.php" ) then??? ??? ???
??? GetHtml()
??? if not Compile("www%.itpub%.net/authimg%.php") then return false end
??? local ok = GetCaptcha('http://www.itpub.net/authimg.php')
??? local code = PromptCaptcha(20)
??? AddFormField("checkcode",code)
??? SetReferer(url)
??? PostForm(url)
???
??? local aid = url:sub(url:len()-5,url:len())
??? return PostFile('http://www.itpub.net/attachment.php?aid='..aid..'&checkcode='..code..'&downnow=1')??? ???
else
??? UpdateLog("網址有誤")
??? return false
end???
end
記得將上面紅色文字改寫成你的帳號和密碼。接著將該檔案存放在 FreeGrab 下的 Modules/webhost,
並將檔名命名為 itpub.lua
接著在 Modules/config.lua 加入下面的片段
freegrab.MODULE["itpub.net"]??? ??? = {??? name="ITPUB", cat="webhost",
??? ??? ??? ??? ??? home="http://www.itpub.net",
??? ??? ??? ??? ??? charset="UTF-8",
??? ??? ??? ??? ??? fnformat="$url.$ext"}
如此就完成 ITPub 腳本的擴充,下面畫面是運作過程
ps. 其實我原本想用 SmartGet 來達成我的需求,可是新版已經將腳本編碼,似乎不想讓別人擴充,我就放棄他了~
本文转自
http://chuiwenchiu.spaces.live.com/Blog/cns!CA5D9227DF9E78E8!1564.entry?wa=wsignin1.0