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

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql三大范式_MySQL学习笔记

1、数据库结构设计1、总-总体流程图2、分-【提取属性】业务分析评价的属性:{用户&#xff0c;课程主标题&#xff0c;内容&#xff0c;综合评分&#xff0c;内容实用&#xff0c;简洁易懂&#xff0c;逻辑分析&#xff0c;发布时间} 问答评论属性&#xff1a;{类型&#xff0c;…

QT webkit 各个类之间关系--QWebView-QWebPag

一、QT webkit简介 1.Qt Qt&#xff08;发音同 cute&#xff09;是一个跨平台的C应用程式开发框架&#xff0c;有时又被称为C部件工具箱。Qt被用在KDE桌面环境、Opera、Google Earth、Skype、Adobe Photoshop Album和VirtualBox的开发中。它是挪威Qt Software 的产品&#xff0…

baidu patchrom项目开发详细教程(Being updated)

linux64位android开发环境 baidu patchrom项目开发 by: doswhy [百度云ROM官方项目组修订] by: colinchen 学习修改 ****************************************************************************************************************************************************…

vue 文件转换二进制_在vue中使用axios实现post方式获取二进制流下载文件(实例代码)...

需求点击导出下载表格对应的excel文件在 vue 项目中,使用的 axios ,后台 java 提供的 post 接口 api实现第一步,在 axios 请求中加入参数,表示接收的数据为二进制文件流responseType: "blob"第二步,在拿到数据流之后,把流转为指定文件格式并创建a标签,模拟点击下载,实…

QMainWindow中的布局管理

给QWidget或者QDialog设置布局的时候方式很简单。创建好一个布局&#xff1a;mainLayout&#xff0c;然后不停地把各个控件往mainLayout里面放&#xff0c;最后调用setLayout(mainLayout)就行了。 QMainWindow中使用这个方法的时候却不管用&#xff0c;因为QMainWindow是默认有…

ubuntu下vim语法高亮问题

造成语法不能高亮的原因&#xff0c;是ubuntu上的vi和vim默认是vim.tiny&#xff0c;tiny是精简版&#xff0c;不支持语法高亮&#xff0c;需要安装完整版vim&#xff0c;即vim.basic。 在shell栏输入下面指令&#xff1a; xiaubuntu:~$sudo apt-get install vim 转载于:https:…

autoincrement mysql_SQL AUTO INCREMENT 字段 | 菜鸟教程

SQL AUTO INCREMENT 字段Auto-increment 会在新记录插入表中时生成一个唯一的数字。AUTO INCREMENT 字段我们通常希望在每次插入新记录时&#xff0c;自动地创建主键字段的值。我们可以在表中创建一个 auto-increment 字段。用于 MySQL 的语法下面的 SQL 语句把 "Persons&…

vs2010中moc文件生成方法

Qt 程序在交由标准编译器编译之前&#xff0c;先要使用 moc 分析 C 源文件。如果它发现在一个头文件中包含了宏 Q_OBJECT&#xff0c;则会生成另外一个 C 源文件。这个源文件中包含了 Q_OBJECT 宏的实现代码。这个新的文件名字将会是原文件名前面加上 moc_ 构成。这个新的文件同…

LFS,编译自己的Linux系统 - 前言

LFS&#xff0c;编译自己的Linux系统 - 前言 近期工作计划&#xff1a;1. 上班时&#xff0c;用Django编写一个网站&#xff1b;2. 下班时&#xff0c;用C#、WPF编写一个单机版应用软件&#xff1b;3. 其他时间&#xff0c;根据LFS编译自己的Linux系统。 LFS是一本书&#xff0…

mysql allowmultiqueries=true_Mysql批量更新的一个坑-allowMultiQueries=true允许批量更新(转)...

实际上&#xff0c;我们经常会遇到这样的需求&#xff0c;那就是利用Mybatis批量更新或者批量插入&#xff0c;但是&#xff0c;实际上即使Mybatis完美支持你的sql&#xff0c;你也得看看你说操作的数据库是否支持&#xff0c;而阿福&#xff0c;最近就遇到这样的一个坑。问题先…

vs生成qt moc文件

1. 右键需要生成moc文件的头文件 2. 将生产的moc加入工程中

javascript好文---深入理解定位父级offsetParent及偏移大小

前面的话 偏移量(offset dimension)是javascript中的一个重要的概念。涉及到偏移量的主要是offsetLeft、offsetTop、offsetHeight、offsetWidth这四个属性。当然&#xff0c;还有一个偏移参照——定位父级offsetParent。本文将详细介绍该部分内容 offsetParent定位父级 在理解…

bash中将字符串split成数组的方法

相信编程时&#xff0c;字符串的处理是很频繁被处理的问题&#xff0c;其中大家肯定不陌生各种语言的string.split(sp)将字符串按照某个字符或子串切分成一个数组。 同样&#xff0c;我们在用shell处理文本信息时也可以方便地实现该功能。 这里主要使用了bash中关于字符串变量的…

mysql的seq2_DESeq2处理TCGA数据库Seq-count数据

1、DESeq2需要导入两个数据集&#xff1a;mycounts, colData。先说mycounts&#xff0c;这就是处理完的TCGA数据RNAmatrix.txt&#xff0c;直接读入即可。library(tidyverse)library(DESeq2)#导入数据setwd("E:/2.Hitseq_counts/")mycountshead(mycounts)#这里有个x&…

理解 e.clientX,e.clientY e.pageX

event.clientX、event.clientY 鼠标相对于浏览器窗口可视区域的X&#xff0c;Y坐标&#xff08;窗口坐标&#xff09;&#xff0c;可视区域不包括工具栏和滚动条。IE事件和标准事件都定义了这2个属性 event.pageX、event.pageY 类似于event.clientX、event.clientY&#xff0c;…

基于FlashPaper的文档播放器

本文主要讨论、描述了使用Adobe公司的Flex与FlashPaper产品完成对发布到网上的文档资料进行只读控制&#xff0c;也就是说只允许浏览操作、对下载、打印进行控制。FlashPaper FlashPaper是Macromedia的一款用于将操作系统所识别的文档的内容通过虚拟打印机制将内容转换为swf文件…

mysql列调换位置_mysql互换表中两列数据方法

1.创建表及记录用于测试CREATE TABLE product ( id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 产品id, name varchar(50) NOT NULL COMMENT 产品名称, original_price decimal(5,2) unsigned NOT NULL COMMENT 原价, price decimal(5,2) unsigned NOT NULL COMMENT 现…

UCScript——C++集成脚本

使用UCScript作脚本&#xff0c;主要是因为它几个特点很适合用于集成&#xff08;脚本引擎体积小&#xff0c;占用资源少&#xff0c;运行快&#xff0c;跨平台跨语言&#xff0c;与宿主语言交互方便&#xff09;&#xff0c;而且它的语法类C语言&#xff0c;不用去多学一门语言…

python经纬度转换xy坐标公式 pyqt_EXCEL公式进行经纬度与XY坐标的相互转换

一、用EXCEL进行高斯投影换算从经纬度B、L换算到高斯平面直角坐标X、Y(高斯投影正算)&#xff0c;或从X、Y换算成B、L(高斯投影反算)&#xff0c;一般需要专用计算机软件完成。在目前流行的换算软件中不足之处&#xff0c;就是灵活性较差&#xff0c;大都需要一个点一个点地进行…

display:inline-block之用法

HTML的元素有多种display属性&#xff0c;比较常见的有display:none; display:block; display:inline和display:inline-block;等。详细可参阅 W3Schools文档。有些HTML元素自然地带有display:block;样式属性&#xff0c;比如<div><h1>...<h6><p><ul…