-4

我正在尝试使用 Delphi 2010 和最新版本的 Indy 10 登录 Craigslist,并检索我的帐户页面(以收集我所有帖子的列表)。

但是,当我发布登录详细信息时,返回的 HTML登录页面的HTML ,而我希望让我的帐户页面列出我的帖子

这是我的最新代码:

function TfrmMain.Login: string;
var
  IdHTTP: TIdHTTP;
  Request: TStringList;
  Response: TMemoryStream;
  SSLHandler: TIdSSLIOHandlerSocketOpenSSL;
begin
  Result := '';
  try
    Response := TMemoryStream.Create;
    try
      Request := TStringList.Create;
      try
        Request.Add('op=login');
        Request.Add('redirect=http://www.craigslist.org/');
        Request.Add('login=' + edtEmail.Text);
        Request.Add('password=' + edtPassword.Text);
        IdHTTP := TIdHTTP.Create;
        try
          SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
          try
            SSLHandler.SSLOptions.Method := sslvSSLv3;
            SSLHandler.SSLOptions.Mode := sslmUnassigned;

            IdHTTP.IOHandler := SSLHandler;
            IdHTTP.AllowCookies := True;
            IdHTTP.HandleRedirects := True;
            IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded';
            IdHTTP.Post('https://accounts.craigslist.org/login', Request, Response);
            Result := IdHTTP.Get('https://accounts.craigslist.org/');
          finally
            SSLHandler.Free;
          end;
        finally
          IdHTTP.Free;
        end;
      finally
        Request.Free;
      end;
    finally
      Response.Free;
    end;
  except
    on E: Exception do
      ShowMessage(E.Message);
  end;
end;

我已经通过调试确认电子邮件和密码是正确的值,因为它们是在请求参数中传递的,所以为什么我没有得到我期望的页面?

4

1 回答 1

4

根据您收到的 HTML,登录字段的名称是inputEmailHandle,而不是login。同样,密码字段是inputPassword,而不是password。您还可以省略一些附加字段,包括steprtrp。我在表格中看到 noopredirect字段。

换句话说,这里显示的代码不是登录Craigslist的代码;它是用于登录 Filestrum 的代码,地址发生了变化,而不考虑周围代码的重要性。

于 2013-03-26T14:22:15.100 回答