Всем привет)) пытаюсь программно авторизоваться на одном сайте, проблема в том, что для авторизации мы должны передать куку, которая вычисляется java-скриптом, я ее вычислил, в скрипте есть такая строчка: if(document.cookie.indexOf('cookie_j' + value)!=-1){document.form.submit(); я так понял, что если у нас есть эта кука, то мы должны передать наши данные из формы (которые мы передали с помощью post запроса) на сервер с помощью submit, и проблема как раз в этом, что я не понимаю как это сделать Заранее Спасибо.
Для выполнения этой задачи нужно знать javascript и иметь опыт разработки сайтов. Без этих двух компонентов ты можешь надеяться лишь на то, что неосознанно введённый с клавиатуры код чудом заработает. Но в любом случае получится какашка. Если тебе нужно сабмитить форму то её, собсно, нужно сабмитить. В простейшем варианте это делается так: Code: <form method='POST' action='' name='mywonderfulform'> ... тут инпуты формы... </form> <script type='text/javascript'> document.mywonderfulform.submit(); </script>
мне нужно реализовать это на c#, я понимаю, что выполняет код на javascript'e, но не знаю как сделать это на c#, мне нужно как то подтвердить данные, которые я переслал в форму
Тебе нужно изучить протокол http и tcp. Когда изучишь и поймёшь как они работают - надо сниффером посмотреть какой хттп-запрос отправляет браузер и накодить на шарпе программу которая будет повторять этот хттп-запрос. Можно обойтись и без сниффера, хттп-запрос можно увидеть в инструментах разработчика, которые есть у всех нормальных браузеров. Гуглить примерно так: https://www.google.ru/search?q=c#+http+request
вы наверно не так поняли меня, я знаю как это все работает и я уже отправил post запрос, вычислил куку и теперь мне выскакивает страница со скриптом, в котором идет проверка на эту куку и в нем условие, которое я указал выше, и если эта кука есть то выполняется submit вот действия по-порядку: 1. зашел на страницу с авторизацией методом get 2. отправил post запрос с данными для авторизации 3. мне вернулась страница со скриптом, вычисляющим cookie 4. я ее вычислил с помощью одной библиотеки 5. опять отсылаю на тот же адрес пост запрос только уже с этой кукой 6. мне выводится тот же скрипт и должен выполнится submit то есть вот эта строка if(document.cookie.indexOf('cookie_j' + value)!=-1){document.form.submit(); понятное дело, что когда мы авторизуемся через браузер, то все выполняется, так как он поддерживает javascript,а при программной авторизации нам нужно как-то выполнить эту строку в ручную вот и бьюсь над этим уже неделю, хотя мб эт легко))
Зачем тебе выполнять яваскрипт? Он что, каждый раз новый генерируется? Так посмотри сниффером какой http-запрос отправляется при сабмите и повтори его на шарпе. Если у тебя возникают такие странные проблемы то тебе определённо нужно изучать хттп-протокол и как вообще работает браузер.
просто получается так, что мне выдается та же самая страница со скриптом хотя вроде запросы делаю верные, не знаю в чем проблема
Куки не могут генерироваться на форме, точнее могут, но тогда это уже не куки а скорее всего токен. Ибо смысл кук файло теряется, но в любом случае берешь CHROME нажимаешь CTRL + SHIFYT + I идешь во вкладку Network и заполняешь ручками данные формы и жмакаешь SUBMIT кнопку. Как поймаешь запрос дергаешь оттуда ключевые заголовки И там будет COOKIE прям кокпипастишь и бахаешь в свою форму со своими кредами уже в C# через тонну методом HttpWebRequest - класс.
Я просто не могу себе представить случайную генерацию кук. Их предназначение хранить какие то вещи на клиенте, например для сессию, токен авторизации, еще что нибудь, в чем смысл кук, которые генерируются каждый раз. И отсюда следующий вопрос. Зачем вообще нужно указывать если человек не авторизован а ему надо авторизоваться?!
Что-то вы демагогию развели. Вывод сниффера на вашей программе, при нормальной авторизации и код формирования запроса в студию. Хватит уже гадать на кофейной гуще.
Просто таким способом реализована система защиты от авторизации левыми методами. Сервер присылает JS с параметрами. JS генерирует запрос и генерирует cookie, они отсылаются на сервер. На сервере проверятется, является ли полученный результат равным ожидаемому.