Delphi 使用indy随机发布网络表单数据

Delphi 使用indy随机发布网络表单数据,delphi,indy,indy10,delphi-10.2-tokyo,Delphi,Indy,Indy10,Delphi 10.2 Tokyo,我正在尝试创建一个登录到,但我很难理解它是如何工作的。为什么要创建登录名?他们的网站API对客人的费率限制为40,对会员的费率限制为100。我基本上希望在使用api时保持一个登录会话 我的理解是,我需要以某种方式登录并获取cookie 我一直在看一些帖子,我很沮丧,因为我根本无法让它工作。我发现了这样的问题:这让我有点理解 那么我做了什么?我使用inspect元素在登录页面上获取输入字段的字段名。“电子邮件”字段有一个名为“电子邮件”的id,但只要我点击“刷新”,这两个字段的名称就会更改 我已经

我正在尝试创建一个登录到,但我很难理解它是如何工作的。为什么要创建登录名?他们的网站API对客人的费率限制为40,对会员的费率限制为100。我基本上希望在使用api时保持一个登录会话

我的理解是,我需要以某种方式登录并获取cookie

我一直在看一些帖子,我很沮丧,因为我根本无法让它工作。我发现了这样的问题:这让我有点理解

那么我做了什么?我使用inspect元素在登录页面上获取输入字段的字段名。“电子邮件”字段有一个名为“电子邮件”的id,但只要我点击“刷新”,这两个字段的名称就会更改

我已经编写了以下代码,但没有成功:

procedure Login(const aUsername, aPassword: string);
var
  http: TIdHTTP;
  ssl: TIdSSLIOHandlerSocketOpenSSL;
  params: TStringList;
begin
  http := TIdHTTP.Create(nil);
  try
    ssl := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
    try
      ssl.SSLOptions.SSLVersions := [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];
      http.IOHandler := ssl;
      http.HandleRedirects := True;
      http.Request.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0';
      http.AllowCookies := True;

      http.Get('https://umod.org/login');

      params := TStringList.Create;
      try
        params.Add('email=' + aUsername);
        params.Add('password=' + aPassword);
        params.Add('remember=1');
        params.Add('redirect=https://umod.org/');

        http.Post('https://umod.org/login', params);
      finally
        params.Free;
      end;
    finally
      ssl.Free;
    end;
  finally
    http.Free;
  end;
end;
我得到以下错误:
EIdHTTPProtocolException:HTTP/1.1 419未知状态

Get()
Web表单页面的HTML之后,您需要解析HTML以定位适当的
元素,并提取需要提交回服务器的所有
元素

该解析将为您提供实际名称(特别是随机生成的名称)和非用户提供的值,您需要将这些值放入
TStringList

必须提交具有非empy
属性(如果不是用户提供的)的任何
元素(尤其是“隐藏”元素)

这正是web浏览器要做的,也是服务器希望您做的。Indy不会帮你解析,你需要自己处理。如果你环顾四周,有很多HTML解析器可用

Get()
Web表单页面的HTML之后,您需要解析HTML以找到适当的
元素,并提取所有需要提交回服务器的
元素

该解析将为您提供实际名称(特别是随机生成的名称)和非用户提供的值,您需要将这些值放入
TStringList

必须提交具有非empy
属性(如果不是用户提供的)的任何
元素(尤其是“隐藏”元素)


这正是web浏览器要做的,也是服务器希望您做的。Indy不会帮你解析,你需要自己处理。如果你环顾四周,有很多HTML解析器可用

恐怕你找不到一个简单的方法。您可以看到,站点不断更改这些字段名称的原因是为了防止自动登录各种机器人。我建议你和网站管理员联系,因为他们正在开发一些对comunity有用的应用程序。哦,我明白了。谢谢你的信息。我会要求他们进行某种认证。恐怕你找不到一个简单的方法。您可以看到,站点不断更改这些字段名称的原因是为了防止自动登录各种机器人。我建议你和网站管理员联系,因为他们正在开发一些对comunity有用的应用程序。哦,我明白了。谢谢你的信息。我会要求他们进行某种身份验证。