обратите внимание, что я задал этот вопрос некоторое время назад, но я не смог ответить на него из-за какой-то личной проблемы, поэтому он был удален, пользователь мета предложил мне снова задать вопрос, и вот он
Недавно я столкнулся с сайтом, который не посылает никакой динамической информации при попытке входа в систему, даже Username
и Password
!, Я имею в виду, что после использования Fiddler
и Http Analyzer
я вижу, что происходит 4 события:
Все это происходит в веб-браузере :
1 - простой Get
для входа в системуглавная страница
2- Post
, которая отправляет некоторые данные (эти данные не включают мои Username
и Password
и кажутся статичными! и даже при том, что есть __USERCONTROLPATH
, который можно извлечь из step 1
ответ, он не меняется, то есть, даже если я пытаюсь войти в систему несколько раз, используя разные браузеры в разное время, все, включая __USERCONTROLPATH
, одинаково)
3- APost
типа JSON
и запрос пустойи ответ содержит только одну строку, как вы можете видеть на изображении ниже:
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
, вот изображение ошибки :
Обновление 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:
Анализатор 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);
Результатом того, что я сделал, была ошибка предупреждения, как вы можете на изображении ниже:
Я очень смущен тем, в чем заключается проблема, я должен решить эту проблему, поэтому любая подсказка или помощь очень ценятся.