加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用lua进行模拟登录

发布时间:2020-12-14 21:44:10 所属栏目:大数据 来源:网络整理
导读:我们的应用程序需要使用Lua从网站获取一些数据.但网站需要身份验证(如谷歌的登录方法). 我正在尝试使用LuaSocket库,但是我找不到完整的代码示例,所以我只知道自己需要做什么. 我知道http.request()中有第二个可选参数,它允许我发送POST数据,而且我也可以使用
我们的应用程序需要使用Lua从网站获取一些数据.但网站需要身份验证(如谷歌的登录方法).

我正在尝试使用LuaSocket库,但是我找不到完整的代码示例,所以我只知道自己需要做什么.

我知道http.request()中有第二个可选参数,它允许我发送POST数据,而且我也可以使用完整语法来指定POST方法和要发送的数据,但我不知道是什么格式数据应该在,它应该是什么样子.表?串?什么?

我也知道我还需要设置内容类型和内容长度 – 但我不知道这些值应该是什么,也不知道如何找到它们.我不知道有什么选择和写作.

有人能帮助我吗使用lua给我一个完整的示例登录谷歌?

任何帮助都将非常感激.非常感谢.

解决方法

如果该站点不使用HTTP基本身份验证,但使用 HTML表单来识别用户,并且您无法访问站点开发人员,那么了解正在发生的事情的最佳方法是查看浏览器的功能.

启动Firebug或Google Chrome开发人员工具或某些HTTP调试代理.

在浏览器中打开该站点,登录并查看浏览器执行此操作的请求以及该站点的回复内容.您必须在程序中模仿相同的请求.

请注意,网站很可能会要求您在后续请求中发送会话信息以保持身份验证.它可以是cookie(或几个)和/或GET参数.再看看浏览器做什么和模仿.

至于格式 – 在网上搜索示例,有一些.

更新:好的,这是一个例子.

请注意,示例中使用的URL很快就会过期.只需在http://requestb.in/创建自己的.在浏览器中打开http://requestb.in/vbpkxivb?inspect以查看程序发送的数据.不要向此服务发送真实的登录名和密码!

require 'socket.http'

local request_body = [[login=user&password=123]]

local response_body = { }

local res,code,response_headers = socket.http.request
{
  url = "http://requestb.in/vbpkxivb";
  method = "POST";
  headers = 
  {
    ["Content-Type"] = "application/x-www-form-urlencoded";
    ["Content-Length"] = #request_body;
  };
  source = ltn12.source.string(request_body);
  sink = ltn12.sink.table(response_body);
}

print("Status:",res and "OK" or "FAILED")
print("HTTP code:",code)
print("Response headers:")
if type(response_headers) == "table" then
  for k,v in pairs(response_headers) do
    print(k,":",v)
  end
else
  -- Would be nil,if there is an error
  print("Not a table:",type(response_headers))
end
print("Response body:")
if type(response_body) == "table" then
  print(table.concat(response_body))
else
  -- Would be nil,type(response_body))
end
print("Done dumping response")

预期产量:

Status: OK
HTTP code:      200
Response headers:
date    :       Sat,23 Jun 2012 07:49:13 GMT
content-type    :       text/html; charset=utf-8
connection      :       Close
content-length  :       3
Response body:
ok

Done dumping response

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读