博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lua cURL使用笔记
阅读量:5127 次
发布时间:2019-06-13

本文共 2565 字,大约阅读时间需要 8 分钟。

 

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, "
SUCC
") ~= 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); endfile:close(); print("Done")

 

转载于:https://www.cnblogs.com/lightsong/p/3735637.html

你可能感兴趣的文章
我对于脚本程序的理解——百度轻应用有感
查看>>
SQL更新某列包含XX的所有值
查看>>
网易味央第二座猪场落户江西 面积超过3300亩
查看>>
面试时被问到的问题
查看>>
spring 事务管理
查看>>
VS2008 去掉msvcr90的依赖
查看>>
当前记录已被另一个用户锁定
查看>>
Bootstrap
查看>>
前端安全-常见的攻击以及防御
查看>>
jsp页面之间传中文参数显示乱码问题的解决
查看>>
LeetCode461.汉明距离
查看>>
类库日期和jsp导包
查看>>
MySQL常用命令总结2
查看>>
js日期时间函数(经典+完善+实用)
查看>>
步进指令与顺控程序设计
查看>>
记一次数据库异常恢复
查看>>
随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比...
查看>>
python3(1)
查看>>
简单聊聊智能硬件的固件测试
查看>>
pat1042. Shuffling Machine (20)
查看>>