Проблема с входом через idhttp, сайт не отправляет имя пользователя и пароль со своими сообщениями - PullRequest
0 голосов
/ 23 декабря 2018

обратите внимание, что я задал этот вопрос некоторое время назад, но я не смог ответить на него из-за какой-то личной проблемы, поэтому он был удален, пользователь мета предложил мне снова задать вопрос, и вот он

Недавно я столкнулся с сайтом, который не посылает никакой динамической информации при попытке входа в систему, даже Username и Password!, Я имею в виду, что после использования Fiddler и Http Analyzer я вижу, что происходит 4 события:
Все это происходит в веб-браузере : enter image description here
1 - простой Get для входа в системуглавная страница
2- Post, которая отправляет некоторые данные (эти данные не включают мои Username и Password и кажутся статичными! и даже при том, что есть __USERCONTROLPATH, который можно извлечь из step 1 ответ, он не меняется, то есть, даже если я пытаюсь войти в систему несколько раз, используя разные браузеры в разное время, все, включая __USERCONTROLPATH, одинаково)
enter image description here 3- APost типа JSON и запрос пустойи ответ содержит только одну строку, как вы можете видеть на изображении ниже:
enter image description here

4- A Get происходит, что является главной страницей входа в систему, но есливы смотрите на HTML, вы можете видеть, что пользователь вошел в систему!

Я пытался выполнить эти шаги один за другим, но я не могу успешно войти на сайт и не могу понять, как отправляются мои Username и Password!

Здесь вы можете увидеть часть кода, который я написал:

//for the sake of cookies and ... i do a Get on the main page 
idHttp.get('MainLogPage');
//i send the first post which contains some information which never changes, they seems static and do not include the username and password 
idhttp.post('someURL', requestList);

jsonRawRequest := TJSONObject.Create;
jsonRequest := TStringStream.Create(jsonRawRequest.ToString, TEncoding.UTF8);
/here i try to do the post that you saw in the image, no value is sent so i send an empty json request.
idhttp.post('someOtherURL', jsonRequest)

В конце мой вопрос как я могу войти на такой сайт?я пропускаю?, в настоящее время я получаю сообщение об ошибке Step 3, когда я публикую JSON, вот изображение ошибки :
enter image description here

Обновление 01:
Я хотел обновить весь пост и объяснить каждый шаг более подробно, но, поскольку я возился с фидлером и проверял сообщения снова, я кое-что заметил, когда Browser отправляет POST "https://www.somewebsite.com//Index.aspx/LoginUser" тип application/json и в "HTTP анализаторе" я вижу, что он отправляет и получает JSON, но в Fiddler Webforms пуст!поэтому я проверил TextView там, где я его увидел!, я снова пошел и проверил HTTP анализатор потока Raw, и там я также увидел отправляемого пользователя и пароль, я не знаю, как пост содержит эту строкучто вы можете видеть ниже, но в fiddler вы можете видеть это в «TextView» и в http анализаторе вы можете видеть это в raw stream, теперь, когда я знаю это, вы можете сказать мне, как я могу имитировать такой пост?способ шифрования пользователя и пароля, который, как я полагаю, является самостоятельным, и мне, вероятно, придется обратиться к администратору сайта для получения алгоритма? Во всяком случае, сначала обо всем, как я могу отправить такой POST?
В Fiddler:
enter image description here

Анализатор HTTP:
enter image description here

Обновление 02:
Я попробовал то, что сказал Remy Lebeau, но JSON на сайте не было стандартным, как вы можете видеть в:
Вводневерная строка Base-64 Ошибка, My JSON использует двойные кавычки вместо одинарных кавычек
Послечто я попробовал жестко запрограммированное решение и прочитал JSON из файла, как вы можете видеть ниже:

loader := TStringList.Create;
loader.LoadFromFile('jsonWithCustomFormat.txt');
jsonRequest := TStringStream.Create(loader[0], TEncoding.UTF8);  

После этого я установил ссылку на страницу входа:

idHttp.Request.Referer := 'myLoginPageURL';  
idHttp.Request.ContentType := 'application/json'

И, наконец, я отправляю POST:

idhttp.Post(URL, jsonRequest, ms);  

Результатом того, что я сделал, была ошибка предупреждения, как вы можете на изображении ниже:
enter image description here

Я очень смущен тем, в чем заключается проблема, я должен решить эту проблему, поэтому любая подсказка или помощь очень ценятся.

...