HTTP-запросы и файлы cookie (HTTP-клиент) - как ими управлять в настольном приложении?

Я только начал изучать C # и Asp.Net, и у меня есть конкретный проект, но мне нужно иметь возможность манипулировать файлами cookie на стороне клиента, и я не могу найти хорошую документацию для этого, поэтому я решил попросить помощи, чтобы получить отправная точка. Я хочу создать настольное приложение, которое было бы немного сложным для моих фактических знаний, но мне нужна отправная точка: мне нужно иметь возможность загружать список имен пользователей, паролей и прокси, а также прокси-пользователя и прокси-сервер. Эта небольшая часть приложения будет использовать учетные записи и прокси для входа на веб-страницу с помощью httpclient. Когда я отправляю запрос GET на страницу входа, я получаю ответ, содержащий некоторые скрытые параметры, которые я должен назначить некоторым переменным и cookie. Я не знаю, как сохранить этот файл cookie в выбранном мной месте (папка приложения в папке «cookie») с выбранным мной именем (имя пользователя, используемое для входа, должно быть именем этого файла cookie). После сортировки ответа я должен отправить запрос POST на сервер со всеми скрытыми параметрами и пользователем, а также передать параметры и файл cookie. Сервер отправит ответ с другим файлом cookie, который я хочу сохранить в том же месте, что и первый файл с тем же именем (перезаписанный). Этот файл cookie будет использоваться позже в программе для выполнения других действий на этом сервере под этим логином. Все эти запросы должны использовать определенный прокси с его учетными данными, прокси, который будет меняться каждый раз, когда я использую новый логин. Мне удалось узнать, как использовать HTTP-клиент из Asp.Net Web API для отправки запроса на получение или публикации, но я понятия не имею, как получить такой контроль над файлами cookie, которые сайт хочет хранить на моем компьютере, и как использовать разные частные прокси для каждого входа в систему ... Я сделал все вышеперечисленное, используя PHP и CURL, и очень легко контролировать файлы cookie с помощью cURL, но мне нужно сделать это на C # и сделать настольное приложение, чтобы ... Asp.Net Web Я думаю, что API и HTTP-клиент - это ключ ... Пожалуйста, дайте мне руку, чтобы начать мой проект и не отклоняйте мой вопрос только потому, что я хочу noob с .net или c # :) Спасибо!


person Florin    schedule 30.05.2013    source источник


Ответы (1)


Получите эту библиотеку http://nuget.org/packages/Microsoft.Net.Http/

Создайте экземпляр HttpClientHandler. У него есть свойство CookieContainer. Вы можете установить все файлы cookie, которые хотите.

Создайте экземпляры HttpClient, передав экземпляр HttpClientHandler в конструктор.

Все HTTP-запросы, которые вы делаете с HttpClient, теперь будут иметь прикрепленные файлы cookie.

person Darrel Miller    schedule 30.05.2013
comment
Насколько я помню, читал в MSDN, файлы cookie хранятся в том же месте, где хранятся файлы cookie в Internet Explorer, но я хочу иметь возможность хранить файлы cookie в папке, которую я выбираю в программе (жестко запрограммирована, не вариант для пользователя). Кроме того, как использовать частные прокси для отправки и получения запросов и ответов? (не прокси, который использует Internet Explorer, а прокси, которые загружает мое приложение) - person Florin; 30.05.2013
comment
@Florin Вы можете установить заголовок Cookie напрямую и управлять им самостоятельно. Вы можете наследовать от DelegatingHandler, чтобы действовать как своего рода прокси внутри процесса. Не совсем уверен, что вы пытаетесь сделать. - person Darrel Miller; 30.05.2013
comment
Я пытаюсь создать приложение, которое (в качестве первого шага) будет использовать список частных прокси (с пользователем и паролем) и список учетных записей (имя пользователя и пароль) для входа на YouTube один за другим (и делать другие вещи на YouTube. как только они войдут в систему). Для этого мне нужно иметь возможность контролировать файлы cookie, иначе Google узнает, что это программа, выполняющая автоматические действия на их сайте, а не реальный человек. Таким образом, все действия одной учетной записи должны выполняться под одним прокси-сервером, тогда мне нужно изменить прокси, когда используется другая учетная запись, и так далее. - person Florin; 31.05.2013