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")

lua cURL使用笔记

时间: 2024-10-10 08:25:06

lua cURL使用笔记的相关文章

lua curl动态链接库编译安装

关于lua curl的资料网上并不是很多.找来找去就那么几个,所以我绝得很有必要把我的经验记下来,以防下次忘记 ---好记性不如烂笔头. 如果在网上(当然是Google)搜索挂关键字“lua curl”或“luacurl”,你搜索的头两条数据很可能是不一样.因为关于lua的curl库有两个:luacurl和Lua-cURL. 如果你打开了这个网址“http://curl.haxx.se/libcurl/lua/”,你就会看这样一段话: There are two different effort

mac下lua环境搭建笔记

下载lua源码包,进入到根目录下 1.执行make macosx 2.然后再sudo make install即可 mac下lua环境搭建笔记,布布扣,bubuko.com

Lua JSONRPC学习笔记

JSON RPC JSON RPC 为利用json数据格式来执行远程调用方式, 作用同xmlrpc,不过与xmlrpc相比, jsonrpc更加轻量,json更加节省数据量,更加可读性高. 官网网站: http://www.json-rpc.org/ JSONRPC协议规范: http://www.json-rpc.org/wiki/specification lua实现的jsonrpc项目: https://github.com/craigmj/json4lua http://json.lua

lua本学习笔记功能

Lua本学习笔记功能 1.  函数返回 指定任务的主要功能是完成,在这种情况下,函数被用作调用语句.函数可以计算并返回值,在这种情况下,作为分配值表达式语句使用. 语法: funcationfunc_name(arguments-list) Statements-list end 调用函数的时候,假设參数列表为空,必须使用()表示是函数调用. Print(8*9,9/8) a = math.sin(3) +math.cos(10) print(os.date()) 上述规则有一个例外.当函数仅仅

lua curl动态链接库编译安装(二)

下面再介绍一下lua-curl中的lua-curl-0.2.tar.gz版本的安装方法,可能对于一般的人来说这个很简单,但是对于我们这些菜鸟来说就不一样了: # wget http://files.luaforge.net/releases/lua-curl/lua-curl/0.2/lua-curl-0.2.tar.gz # tar zxf lua-curl-0.2.tar.gz # cd lua-curl-0.2 # ./configure --help # ./configure --wi

Lua 性能相关笔记

1.创建一个闭合函数要比创建一个table更廉价,访问非局部的变量也比table字段更快. 2.访问局部变量要比全局变量更快,尽可能的使用局部变量,可以避免无用的名称引入全局环境. 3.do-end语句块能提高lua运行效率,lua运行一行代码就会开启新的程序块,而do-end只有在遇到end时才会算做一个程序块. 4.正确的尾调用不耗费任何栈空间,特别是递归时不会造成栈溢出. 5.循环中使用无状态的迭代器,可以避免每次创建新的闭合函数而产生开销. 6.多重赋值解决声明多个变量时的运行效率. 7

cURL 学习笔记与总结(2)网页爬虫、天气预报

例1.一个简单的 curl 获取百度 html 的爬虫程序(crawler): spider.php <?php /* 获取百度html的简单网页爬虫 */ $curl = curl_init('http://www.baidu.com'); //resource(2, curl) curl_exec($curl); curl_close($curl); 访问该页面: 例2.下载一个网页(百度)并把内容中的百度替换成'PHP'之后输出 <?php /* 下载一个网页(百度)并把内容中的百度替换

LUA table学习笔记

function printT( ... ) for i,v in ipairs(...) do print(i,v) end end t1={} t2={} t3={} table.insert(t1,"t1") table.insert(t1,"t2") table.insert(t1,1,"t3") print "1 table.insert-----------" --printT(t1) print "2

cURL 学习笔记与总结(1)概念

概念: cURL(Client URL Library Functions)is a command line tool for transfering data with URL syntax(使用 URL 语法传输数据的命令行工具),即客户端向服务器请求资源的工具. 使用场景: ① 网页资源(例如编写网页爬虫) ② WebService 数据接口资源(比如动态获取接口数据,比如天气.号码归属地等) ③ FTP 服务器里的文件资源(下载 FTP 服务器里面的文件) ④ 其他资源(所有网络上的资