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