使用libCurl进行登录

我正在尝试使用LibCurl进行登录。实际上,我正在使用Lua中的libCurl绑定(LuaCurl)。我参考了这个网页:http://www.hackthissite.org/articles/read/1078

我尝试了这个:

> require("libcurl")
> c=curl.new()
> c:setopt(curl.OPT_USERAGENT,"Mozilla/4.0")
> c:setopt(curl.OPT_AUTOREFERER,true)
> c:setopt(curl.OPT_FOLLOWLOCATION,true)
> c:setopt(curl.OPT_COOKIEFILE,"")
> c:setopt(curl.OPT_URL,"https://www.chase.com")
> res=c:perform()

但在这个最后操作之后,程序会像在等待某些内容一样停滞不前。我在这里做错了什么?

谢谢

点赞
用户221509
用户221509

我尝试了你的程序,看起来运行良好。我得到的是给定网站的内容被输出到了 stdout。看起来你只是遇到了网络问题...

如果你想要将整个输出捕获为字符串并稍后进行处理,你必须使用 OPT_WRITEFUNCTION 提供回调函数,该函数将调用更多数据,你可以将其保存。这是我在简单的网络挖掘工具箱 WDM 中实现 GET 方法的简化版本。

local c = curl.new()
...
function get(url)
    c:setopt(curl.OPT_URL,url)
    local t = {} -- 将输出存储在这里
    c:setopt(curl.OPT_WRITEFUNCTION, function (a, b)
        local s
        -- luacurl 和 Lua-cURL 友好的方式
        if type(a) == "string" then s = a else s = b end
        table.insert(t, s) -- 存储这个数据片段
        return #s
    end)
    assert(c:perform())
    return table.concat(t) -- 返回整个内容
end
2013-02-07 21:28:16