|
|
wget - давить. Версию 1.4.5 для win32, если кому интересно - другие не проверял.
Известно, что разновсякая непечатаемость (русские буквы, спецсимволы), попадающаяся в URL, должна кодироваться
как %xx, где хх - шестнадцатеричный код. Со стороны сервера всё это декодируется куда надо и обрабатывается.
На одном сайте (какая разница на каком?) есть формочка. В формочку вбивается строчка, жмакается
submit, формочка уходит куда положено. Есть желание автоматизироваться и послать пару сотен строчечек
скриптом. Срисовывается
(из строки браузера) запрос к скрипту (вида http://some.site.ru/script?strochka=znachenie),
генерится пучок таких url с изменяющимся полем "значение", этим кормится wget. Всё в порядке?
Как бы не так.
В поле "значение" у меня (ну, не повезло) должен содержаться символ "равно". При заполнении
формочки в браузере всё передается (и принимается) правильно. При копировании строчки url
из адресной строки, исправлении чего надо, и кормлении этим браузера (другого окна - для чистоты эксперимента)
- работает. При этом "равно" в строчке заискейплено через %3D, скрипт разбирающий строку url
(http://some.site.ru/script?strochka=something%3Dequals_to_something) получает
значение strochka равное "something%3Dequals_to_something", разэскейпливает, и
получает "something=equals_to_something", что, собственно, и требуется.
Кормим тем же самым url - wget, и обнаруживаем, что сервер получает уже вовсе
http://some.site.ru/script?strochka=something=equals_to_something, со всеми вытекающими.
С лёгким обалдением чешем репу, экспериментируем со слэшами, кавычками, процентами, в конце концов
заворачиваем wget через локальный прокси - посмотреть вживую, что он там посылает. Мало ли - может у них там,
скажем, referer проверяется.
Посмотрев на результат и поигравшись - обалдеваем окончательно. wget "разэскейпливает" практически всё,
что найдет в строчке. Ту же кириллицу, например. Знак "процента" он не разэскейпливает,
поэтому попытка подсунуть %223D проваливается. Попытка подсунуть %%3D приводит к разэскейпливанию
%3D и запросу странной штуки "%=". Чтение хелпов просветлению не поспособствовало, фантазия
у меня иссякла...
...при помощи обнаруженного где-то в завалах fetch.pl и перла проблема была решена. Закат солнца
состоялся - ну и что, что вручную. Но к wget уважения у меня поубавилось - это хорошо, когда программы
умные, но когда они считают себя умнее меня - это уже плохо. Например, wget, запущеный с
"число попыток=очень много" при определенных ошибках (к сожалению, довольно часто встречающихся
на mp3 и варезных сайтах) сваливает после первой попытки. А когда-то вообще падал в core
от connection refused на ftp :-) Сейчас перестал :-)
| |
| |