Войдите на веб-страницу, используя C # - PullRequest
2 голосов
/ 26 августа 2009

Я хотел бы зайти на определенную веб-страницу и загрузить несколько страниц, когда пользователь вошел в систему. Я думаю, что теоретически знаю, что делать, основываясь на ответе на этот вопрос stackoverflow , но я понятия не имею, где в адресе я должен поставить учетные данные для входа. В приведенном выше вопросе это совершенно очевидно, но в Аукро это не так очевидно.
Буду очень признателен за любую услугу ... :)

Ответы [ 4 ]

1 голос
/ 26 августа 2009

Одна сложность заключается в том, что эта страница входа в систему устанавливает кучу файлов cookie сеанса и добавляет некоторые уникальные параметры строки запроса для вашего сеанса. Предположительно, вам нужно будет получать хорошие значения с сервера для каждого создаваемого вами сеанса.

Когда вы садитесь на https://ssl.aukro.cz/enter_login.php,, вы получаете 302 найденных (которые на практике используются для перенаправления). Полный запрос выглядит так:

Date    Wed, 26 Aug 2009 17:50:05 GMT
Server  Apache
Vary    Accept-Encoding
Set-Cookie  ws2=acda7c76687f; expires=Wed, 26-Aug-2009 18:20:05 GMT; path=/; domain=.aukro.cz
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control   no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma  no-cache
Location    https://ssl.aukro.cz/enter_login.php?session=NmQ2YQFRBVABVgFRVFQAXVRXVFZXWlcHBVRVWAcGUF0OUVJWVVRRXFVUBFFTAAcGAFxUA1NSY2JkZQ%3D%3D&global_login_hash=e16bd60f566a0ae3752997bf21844c4ec2bd0d22&session_login_hash=fecd7825582b6d038d288f67c368090aa369c85d&url=OTFhY1hFRkYDHk4UR0YcV0xaEwweUkgZXEMTDEIeU1VaVBIQb1RARFZDTxNYQQ1YVm4FCkIMAzAxMjY%3D
Content-Encoding    gzip
Content-Length  26
Keep-Alive  timeout=2, max=9999
Connection  Keep-Alive
Content-Type    text/html; charset=UTF-8

Вам нужно будет захватить местоположение URL и файл cookie, который он устанавливает ("ws2"). Затем вам нужно перейти на тот URL перенаправления, который вы захватили, и получить остальные файлы cookie, которые он устанавливает, а именно ws2, stsd_refr и qeppo_login.

Затем вам необходимо заполнить тело сообщения POST элементами формы, как указано выше, и в предоставленных вами ссылках.

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

Короче говоря, просто используйте Fiddler или Firebug, чтобы захватить, как выглядит сеанс входа в систему, и имитировать его, используя методы, которые вы уже видели.

0 голосов
/ 26 августа 2009

Вам потребуется просмотреть источник веб-страницы и найти <form>, который используется для входа в систему. Это даст вам URL, который вам нужно будет опубликовать. Вам нужно будет указать все переменные в тегах <input>, так же, как они указали в вопросе, который вы связали.

В этом случае вам нужно будет указать: session, global_login_hash, session_login_hash, url, request_server, user_login, user_password

Один из способов определить, что необходимо отправить, - это использовать прокси, например Fiddler2 , затем использовать веб-браузер с его прокси-сервером Fiddler и войти на веб-страницу. Fiddler предоставит вам заголовки запроса и ответа и текст.

0 голосов
/ 26 августа 2009

Вам необходимо создать запрос HTTPS POST, содержащий следующие значения в теле application/x-www-form-urlencoded:

user_login = <user name>
user_password = <password>
session = "ZTEzMw9RAAcGUlIABQgDVlcBBVAAB1NRAAFQClAAUQADCAdRDgNRAQcDVwsHBQADVAYAAAYBNjA1Yg=="
global_login_hash = "c6da0c2fa41454f62c80d9cc688f4303ebebb9b3"
session_login_hash = "8e5190abcb4cccee78b7331a616c4fb723f7fe41"
url = "OTFhY1hFRkYDHk4UR0YcV0xaEwweUkgZXEMTDEIeU1VaVBIQb1RARFZDTxNYQQ1YVm4FCkIMAzAxMjY="
request_server = "ssl.aukro.cz"

Вы можете начать с ввода значений для user_login и user_password и игнорировать все остальное, но невозможно точно знать, что запрашивает сервер. Закодированные значения, безусловно, не подлежат повторному использованию, и, если потребуется, вам придется соскрести их со страницы входа в систему, прежде чем войти в систему.

0 голосов
/ 26 августа 2009

Это может быть действительный альтернативный метод

Необходимые элементы управления для этого:

ID = "user_login"

ID = "user_password"

value = "Přihlásit" (очевидно, чешский для "Логин")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...