lua cURL使用筆記


 

cURL

      cURL是 URL命令行工具, 即 command URL, 可以通過命令行模擬各種應用協議的發包, 包括FTP HTTP HTTPS,

官方網站 http://curl.haxx.se/

 

luacurl

lua curl是基於curl的庫libcurl(http://curl.haxx.se/libcurl/),

針對libcurl開放的API(http://curl.haxx.se/libcurl/c/), 定義lua API對curl基本功能進行封裝。

 

luauser中列出來3中綁定libcurl的lua封裝庫(http://lua-users.org/wiki/LuaCurl),

其中freepops-luacurl(http://www.freepops.org/en/)實現了libcurl所有的easy 接口 (http://curl.haxx.se/libcurl/c/libcurl-easy.html)

 

 luaforge上提供一個 windows 上可運行luacurl的壓縮包(http://files.luaforge.net/releases/luacurl/freepops-luacurl/0.3.0):

 freepops-lua-curl-binary-win32-openssl

本文示例就采用這個windows可運行包。

解壓后, cmd命令行cd到解壓目錄,使用 luaxx.exe yy.lua 接口運行示例腳本。

 

 示例

 例子,實現https方式,登錄網站,訪問某個網頁,修改其中參數的功能。其中xx應用時候需要修改。

require("curl")

local ipList = 
{
    "192.168.1.1",
  "192.168.1.1",
}

--登陸
function loginWeb(ip) 
  c
= curl.easy_init()
  c:setopt(curl.OPT_SSL_VERIFYHOST,
0);
  c:setopt(curl.OPT_SSL_VERIFYPEER,
0);
  c:setopt(curl.OPT_URL,
"https://"..ip.."/")
c:setopt(curl.OPT_POSTFIELDS,
"Username=admin&Password=admin&Frm_Logintoken=&action=login")

  c:setopt(curl.OPT_WRITEFUNCTION, function(buffer)
    --print(buffer)
     --print("\r\n---------------------------\r\n");
    return #buffer
  end)

   c:perform()
end

--訪問頁面
function accessPage(ip) 
  c
= curl.easy_init()
  c:setopt(curl.OPT_SSL_VERIFYHOST,
0);
  c:setopt(curl.OPT_SSL_VERIFYPEER,
0);
  c:setopt(curl.OPT_URL,
"https://"..ip.."/xxpage.html")

  c:setopt(curl.OPT_WRITEFUNCTION, function(buffer)
    --print(buffer)
     --print("\r\n---------------------------\r\n");
    return #buffer
  end)

   c:perform()
end

--設置參數
function setParameter(ip, file) 
  c
= curl.easy_init()
  c:setopt(curl.OPT_SSL_VERIFYHOST,
0);
  c:setopt(curl.OPT_SSL_VERIFYPEER,
0);
  c:setopt(curl.OPT_URL,
"https://"..ip.."/xx.php")
  c:setopt(curl.OPT_POSTFIELDS,
"DaylightSavingsUsed=1&Dscp=-1")

  local htmlTable = {}
  c:setopt(curl.OPT_WRITEFUNCTION,
function(buffer)
    --print(buffer)
     --print("\r\n---------------------------\r\n");
    table.insert(htmlTable, buffer)     
return #buffer   end)

   c:perform()

  local htmlStr = table.concat(htmlTable);
  local resultBuff = "";
  if string.match(htmlStr, "<result>SUCC</result>") ~= nil then
    resultBuff = ip.." config OK\r\n";
    print(
resultBuff)
    file:write(resultBuff);
  else
    resultBuff = ip.." config NOK\r\n";
    print(
resultBuff)
   file:write(resultBuff);

 end
end


local file = io.open(".\\result.txt", "w+"); for key,ip in ipairs(ipList) do
  loginWeb(ip);
  accessPage(ip);
  openLightSave(ip, file);
end file:close();
print("Done")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM