• url请求


    --[[local g = require 'library.global'
    --__ml_ss = mlc.prefix.ml_psession..tostring(os.time());
    local mlc = require 'ml_config'


    local function haslogin()
    local r = g.getredis()
    local s,e = r:get();
    if s ~= nil then
    return true;
    else
    return false;
    end
    end


    local ffiok, ffi = pcall(require,"ffi")
    --require('library.kav_fnc')
    --md5 = require('library.md5')
    system_hid = {}

    --require "redis"

    --[[local myclient = redis.connect();
    local all_keys = myclient:keys("*");
    local all_values = myclient:mget(all_keys);

    for i, k in ipairs( all_keys) do
    local v = all_values[i];
    print(k, v)
    end --]]

    --[[local result ={}
    for i = 1,#(KEYS) do
    result[i]= redis.call('get',KEYS[i])
    end
    return result--]]

    --[[local result={};
    local myperson=KEYS[1];
    local nums=ARGV[1];

    local myresult =redis.call("hkeys",myperson);

    for i,v in ipairs(myresult) do
    local hval= redis.call("hget",myperson,v);
    redis.log(redis.LOG_WARNING,hval);
    if(tonumber(hval)<tonumber(nums)) then
    table.insert(result,1,v);
    end
    end

    fodr i=1,#(result) do
    print(result[i])
    end

    return result;--]]
    --]]

    --[[local myKeyList=redis.call("keys","string.tmd.*")
    local count=0
    local tempStrlocal str --experience all the keys 遍历数组 有多种方法遍历数组 网上很容易找到
    for index,line in pairs(myKeyList) do --通过Redis API调用 获取line的值 line即为键
    str=redis.call("get",line) --string.sub() match() gmatch() len() 对字符串操作的函数
    local matchStr=string.match(str,"http://tmd2.ghost.com/comment/images/%d+.png")
    --匹配到http链接 --下面注释掉的函数可以在"服务器"端打印变量的值
    print(matchStr)
    local reserveStr=matchStr.sub(matchStr,40,string.len(matchStr));
    --将链接截断,并替换成指定的模式
    --print(reserveStr) -- .. 用于连接字符串 不像java中用 + 此处替换 str为源 中间为模式 右边为目标
    tempStr=string.gsub(str,"http://tmd2.ghost.com/comment/images/%d+.png","http://tmd2-img.ghost.com/1/"..reserveStr) --print(tempStr) --替换完后将之重新设置到Redis中
    redis.call("set",line,tempStr)
    print(redis.call("get",line))
    end--]]

    ---------------------------------------------

    二、lua发送http请求代码

    1.get请求

    bash
    local zhttp = require "resty.http"
    local function http_post_client(url, timeout)
    local httpc = zhttp.new()

    timeout = timeout or 30000
    httpc:set_timeout(timeout)

    local res, err_ = httpc:request_uri(url, {
    method = "GET",
    headers = {
    ["Content-Type"] = "application/x-www-form-urlencoded",
    }
    })
    httpc:set_keepalive(5000, 100)
    --httpc:close()
    return res, err_
    end

    2.post请求

    bash

    local zhttp = require "resty.http"
    local function http_post_client(url,body,timeout)
    local httpc = zhttp.new()

    timeout = timeout or 30000
    httpc:set_timeout(timeout)

    local res, err_ = httpc:request_uri(url, {
    method = "POST",
    body = body,
    headers = {
    ["Content-Type"] = "application/x-www-form-urlencoded",
    }
    })
    httpc:set_keepalive(5000, 100)
    httpc:close()
    if not res then
    return nil, err_
    else if res.status == 200 then
    return res.body, err_
    else
    return nil, err_ end
    end

    end

    bash

    --get
    local resp, err = http_post_client("http://zixuephp.net/index.html?name=test",3000)
    --post
    local body = {"name" = "test"}
    local resp, err = http_post_client("http://zixuephp.net/index.html?name=test",body,3000)




    ----------------------------------------

    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(" --------------------------- ");
        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(" --------------------------- ");
        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(" --------------------------- ");
        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 ";
        print(resultBuff)
        file:write(resultBuff);

      else

        resultBuff = ip.." config NOK ";
        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")

    ------------------------------------------------------------------------------------------------------------------

    local function postdata(url,postdata)
    local res="";
    c = curl.new()
    c:setopt(curl.OPT_URL,url)
    c:setopt(curl.OPT_POSTFIELDS,postdata)
    c:setopt(curl.OPT_WRITEFUNCTION, function(userparam,buffer)
    if buffer ~= nil then
    --local f = io.open(kav_fnc.getmodulepath()..'session2.dat','w')
    --if f ~= nil then
    --f:write(buffer);
    print( buffer);
    --f:close();
    --end

    res =res .. buffer;
    return #buffer;
    end
    end)

    local i,j,k = c:perform();


    local rep=string.char(239, 187, 191);-- 防 utf标志开头 EF BB BF
    res =string.gsub(res,rep,'');
    if i == nil then
    return nil,j,k;
    else
    return res;
    end

    return nil;
    end


    在C:UsersAdministratorDesktoplualibraryutil.lua

    local M = {}
    _G[NAME] = M
    function M.getFile(file_name)
    local f = assert(io.open(file_name, 'r'))
    local string = f:read("*all")
    f:close()
    return string
    end

  • 相关阅读:
    Analyzing the Go runtime scheduler from source code perspective
    golang教材
    Kafka#4:存储设计 分布式设计 源码分析
    机器学习应该准备哪些数学预备知识?
    Why does deep learning work?
    Deep Reinforcement Learning
    How do I learn machine learning?
    What are some good books/papers for learning deep learning?
    why deep learning works
    AI 名校课程&书籍 需要学习
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/10962932.html
Copyright © 2020-2023  润新知