LUACURL使用笔记
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")
作者:LightSong
出处:http://www.cnblogs.com/lightsong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利