Войти и получить куки Используя CFHTTP

Я хочу войти (https://pacer.login.uscourts.gov/csologin/login.jsf) с использованием CFHTTP. Используя Http Live Header, мы собираем все необходимые параметры и публикуем URL-адрес для входа. Вот мой пример кода:

<cfhttp url="#arguments.login_url#" method="post" timeout="30" redirect="no" resolveURL="yes" useragent="Mozilla/5.0">
  <cfhttpparam name="login" value="login" type="formField">
  <cfhttpparam name="login:loginName"value="xxxx"type="formField">                      
  <cfhttpparam name="login:password" value="xxxx" type="formField">
  <cfhttpparam name="login:clientCode" value="" type="formField">
  <cfhttpparam name="login:Aj_idt206" value="" type="formField">
  <cfhttpparam type="formField" name="javax.faces.ViewState" value="stateless">
</cfhttp>

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

Благодарность

Ату


person Atul Thakre    schedule 12.12.2014    source источник
comment
Вы сначала искали? :) Это был самый первый результат для файлов cookie cfhttp bennadel.com/blog/ . Похоже, именно то, что вы пытаетесь сделать. Если нет, обновите свой вопрос, указав более подробную информацию.   -  person Leigh    schedule 12.12.2014
comment
Возможно, у вас есть еще кое-что, что можно сделать здесь. Рассматриваемая страница сложна и содержит много JS. Вы точно знаете, что загнали поля в ловушку? Является ли ваша попытка выше результатом простого взгляда на саму форму? Как насчет заголовков и файлов cookie для передачи. Что насчет редиректов? Что вы видите, когда выполняете <cfdump var="#cfhttp#"/> - какие-нибудь подсказки? Это будет методом проб и ошибок.   -  person Mark A Kruger    schedule 12.12.2014
comment
@Mark A Kruger: как передать заголовок и файлы cookie? пожалуйста, объясните, как извлечь заголовок и файлы cookie из приведенного выше URL-адреса. Я использую ‹cfdump var=#cfhttp#› после приведенного выше кода.   -  person Atul Thakre    schedule 12.12.2014
comment
Ату, прочитайте документацию для <cfhttpparam ..> - заголовки и файлы cookie - это просто другие виды ресурсов, которые являются частью http-запроса. Оба типа HEADER и COOKIE поддерживаются cfhttpparam.   -  person Mark A Kruger    schedule 12.12.2014
comment
@MarkAKruger: хорошо, я попробую и дам тебе знать.   -  person Atul Thakre    schedule 12.12.2014
comment
@Leigh: Привет, Ли, этот блог получает только данные URL-адреса, но я хочу опубликовать сообщение по указанному выше URL-адресу. Тогда, пожалуйста, предоставьте предложение по переоценке публикации в CF?   -  person Atul Thakre    schedule 12.12.2014
comment
@AtuTha - Использование POST или GET - это одна и та же концепция. Вы делаете запрос на сайт. Прочитайте заголовки файлов cookie. Затем используйте cfhttpparam для передачи файлов cookie обратно на сервер в последующих запросах, как это делает браузер.   -  person Leigh    schedule 12.12.2014
comment
@AtuTha Я внес пару небольших изменений в компонент CfHttpSession Бена Наделя (см. комментарий Ли выше) и с большим успехом использовал его для выполнения модульного тестирования на сайте, который требует от пользователя входа в систему. Он получает форму входа, отправляет заполненную форму и переходит на страницу, для которой выполняется тестирование. Он не смог бы этого сделать, если бы не извлекал и не прикреплял информацию о файлах cookie.   -  person Paul Rowe    schedule 18.02.2015


Ответы (1)


Я думаю, вам сначала нужно выполнить запрос get, чтобы начать новый сеанс, а затем выполнить post, используя JSESSIONID, который вы получили из запроса get:

<cfhttp url="https://pacer.login.uscourts.gov/csologin/login.jsf" method="get" timeout="30" redirect="no" resolveURL="yes" useragent="Mozilla/5.0">
</cfhttp>

<cfset setcookies = cfhttp['Responseheader']['set-cookie']>

<cfhttp url="https://pacer.login.uscourts.gov/csologin/login.jsf" method="post" timeout="30" redirect="no" resolveURL="yes" useragent="Mozilla/5.0">
    <cfhttpparam name="login" value="login" type="formField">
    <cfhttpparam name="login:loginName"value="xxxx"type="formField">                      
    <cfhttpparam name="login:password" value="xxxx" type="formField">
    <cfhttpparam name="login:clientCode" value="" type="formField">
    <cfhttpparam name="login:Aj_idt206" value="" type="formField">
    <cfhttpparam type="formField" name="javax.faces.ViewState" value="stateless">
    <cfhttpparam type="header" name="Cookie" value="#setcookies#">
</cfhttp>
person Jan Brünemann    schedule 22.12.2015