-4

Delphi2010と最新バージョンのIndy10を使用して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であり、ではありませんpasswordstep、、、など、省略した追加のフィールドもいくつかありrtますrpopフォームにまたはredirectフィールドが表示されません。

つまり、ここに示されているコードは、Craigslistにログインするためのコードではありません。これは、周囲のコードの重要性に関係なく、アドレスを変更してFilestrumにログインするためのコードです。

于 2013-03-26T14:22:15.100 に答える