Проблема с входом через idhttp, сайт не отправляет имя пользователя и пароль со своими сообщениями
пожалуйста, обратите внимание, что я задал этот вопрос некоторое время назад, но я не смог ответить на него из-за какой-то личной проблемы, поэтому он был удален, пользователь мета предложил мне снова задать вопрос, и вот он
Недавно я столкнулся с сайтом, который не посылает никакой динамической информации при попытке входа, даже Username
а также Password
!, что я имею в виду, что после того, как я использую Fiddler
а также Http Analyzer
я вижу, что происходит 4 события:
Все это происходит в веб-браузере:
1- простой Get
для входа на главную страницу
2- А Post
который отправляет некоторые данные (Эти данные не включают в себя мой Username
а также Password
и они кажутся статичными! и хотя есть __USERCONTROLPATH
который может быть извлечен из step 1
ответ, он не меняется, то есть, даже если я пытаюсь войти в систему несколько раз, используя разные браузеры в разное время, все, включая __USERCONTROLPATH
та же)
3- А Post
который из JSON
введите и запрос будет пустым, а ответ содержит только одну строку, как вы можете видеть на изображении ниже:
4- А 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
Вот изображение ошибки:
Обновление 01:
Я хотел обновить весь пост и объяснить каждый шаг более подробно, но, как я возился с Fiddler и проверяя сообщения снова, я заметил что-то, когда Browser
отправляет POST
"https://www.somewebsite.com//Index.aspx/LoginUser"
тип application/json
и в "HTTP анализаторе" я вижу, что он отправляет и получает JSON
но в Fiddler
Webforms
пустой! так что я проверяю TextView
вот где я это увидел! я снова пошел и проверил HTTP
Необработанный поток в анализаторе, и там я также видел отправляемое имя пользователя и пароль, я не знаю, как пост содержит эту строку, которую вы можете увидеть ниже, но в fiddler вы можете увидеть ее в "TextView" и в http анализаторе вы можете увидеть это в raw stream, теперь, когда я это знаю, вы можете сказать мне, как я могу имитировать такую запись? Кстати, зашифрованный пользователь и пароль, который, как я полагаю, является самостоятельным, и мне, вероятно, придется Обратитесь к администратору сайта за алгоритмом? Во всяком случае, обо всем по порядку, как я могу отправить такой POST
?
В Fiddler:
Анализатор HTTP:
Обновление 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);
Результатом того, что я сделал, была ошибка предупреждения, как вы можете на изображении ниже:
Я очень озадачен тем, в чем заключается проблема, я должен решить эту проблему, поэтому любая подсказка или помощь очень ценятся.