Wget не полностью обрабатывает вызов http - PullRequest
0 голосов
/ 17 января 2011

Вот команда wget, которая выполняет пакет отчетов по стеку HTML / PHP, размещенный третьей стороной - у нас нет контроля над страницей PHP или HTML

wget --no-check-certificate --http-user = / myacc --http-password = mypass -O /tmp/myoutput.csv "https://myserver.mydomain.com/mymodule.php?myrepcode=9999&action=exportcsv&admin=myappuserid&password=myappuserpass&startdate=2011-01-16&enddate=2011-01-16&reportby=mypreferredview"

Все элементы работают отлично:

- http-user / --http-pass, предлагаемый стандартным всплывающим окном браузера для запроса имени пользователя и пароля -O /tmp/myoutput.csv - интересующий выходной файл

https://myserver.mydomain.com/mymodule.php?myrepcode=9999&action=exportcsv&admin=myappuserid&password=myappuserpass&startdate=2011-01-16&enddate=2011-01-16&reportby=mypreferredview"

Файл, сгенерированный на лету по параметрам

myrepcode = 9999 - ссылка на рассматриваемый отчет action = exportcsv, записанный внутри функции admin = myappuserid сторонняя сторона использует SSL для доступа к сайту - затем внутреннее имя пользователя и пароль хранятся в базе данных для доступа к функциям сайта) пароль = myappuserpass startdate = 2011-01-16 эти и конечные данные являются параметрами, характерными для отчета 9999 EndDate = 2011-01-16 reportby = mypreferredview Это опция в отчете, которая обеспечивает разные уровни детализации или агрегирования

Проблема в том, что параметр reportby является переключателем в списке из 5 вариантов выбора (уверен, что мне достаточно по умолчанию самый высокий уровень агрегации, я хочу последний, наиболее подробный)

Вот пример кода HTML-страницы для опций отчета

Теги в HTML не занесены в белый список, поэтому я отправлю образец, если потребуется

<td>View by</td>
<td>
   <input class="naf-radio" name="reportby" id="reportby[thedefault]" value="thedefault" type="radio">The Default                    
   <input class="naf-radio" name="reportby" id="reportby[myleastpreferred]" value="myleastpreferred" type="radio">My Least Preferred
   <input class="naf-radio" name="reportby" id="reportby[mysecondleastpreferred]" value="mysecondleastpreferred" type="radio">My Second Least Preferred
   <input class="naf-radio" name="reportby" id="reportby[mythirdleastpreferred]" value="mythirdleastpreferred" type="radio">My Third Least Preferred
   <input class="naf-radio" name="reportby" id="reportby[mypreferred]" value="mypreferred" type="radio">My Preferred
</td>

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

Вопросы

1) Кто-нибудь сталкивался с этой нотацией в HTML (id = inputname [inputelement]) Я разговаривал со старшим веб-разработчиком, и он никогда не видел эту запись для входных данных (id = inputname [inputelement]) - и w3schools, похоже, тоже не знакомы с этим на основе обширного поиска

2) Может ли команда wget выбрать радиоустройство не по умолчанию при выполнении команды?

Это, вероятно, будет первоначально получено с ответом "Use CURL" - однако подход wget очень хорошо работает в ограниченной среде, в которой я работаю, особенно потому, что мне нужно загрузить 10000 таких элементов.

Спасибо за ответ

1 Ответ

0 голосов
/ 17 января 2011

Радиокнопка - это просто еще один элемент формы, который обычно можно передать через строку запроса.Некоторые приложения требуют, чтобы параметры передавались как данные POST, но это не так часто встречается в моем опыте.

Что вам нужно сделать, это найти имя переключателя и значение, которое находится на желаемомвариант.Затем вы просто добавляете &name=value к вашему текущему URL, и это должно действовать как выбор этой переключателя.

Обозначение id=inputname[inputelement] может существовать в javascript или похожих языках, но не в HTML.В HTML это просто имя = значение типа объявлений в URL (и атрибутов и прочего).В этом случае я бы предположил, что эта строка должна была интерпретироваться в любом коде, генерирующем HTML, а не отображаться на экране.

Также вам необходимо убедиться, что вы urlencode любых значений, которые вы вводите в URLчтобы убедиться, что они не содержат недопустимых символов (например, & или = запутает его полностью).

Если метод querystring не работает, то wget имеет переключатель --post-data, который позволяет вам указатьданные для публикации, что будет делать форма.Если вы используете --post-data=reportby=mypreferred, я надеюсь, что с этим вы добьетесь большего успеха.

Если это все равно не удастся, я бы использовал какой-то инструмент для просмотра вашего запроса wget, а также вашего запроса через браузер и сравнения заголовков иДанные, чтобы увидеть, что отличается от них.Одним из таких инструментов для этого является Fiddler (http://www.fiddler2.com/fiddler2/), хотя я уверен, что многие другие существуют.

...