Здравствуйте. Выполняю запрос в консоли: Код (Text): wget -O - avito.ru --2014-04-29 22:33:12-- http://avito.ru/ Resolving avito.ru (avito.ru)... 80.76.156.73 Connecting to avito.ru (avito.ru)|80.76.156.73|:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: http://www.avito.ru/ [following] --2014-04-29 22:33:15-- http://www.avito.ru/ Resolving www.avito.ru (www.avito.ru)... 80.76.156.73 Reusing existing connection to avito.ru:80. HTTP request sent, awaiting response... 403 Forbidden 2014-04-29 22:33:15 ERROR 403: Forbidden. Ну думаю ладно, видимо ip в бане. Беру из загашника другой айпи, немного им баловался с авито, результат тот же. Покупаю третий, тут же выполняю команду wget -O - avito.ru И опять 403! Как такое может быть?
ах да, забыл добавить, что тестил на денвере, php 5.4, все работает шоколадно, тестил на ubuntu 12.04, пхп тоже 5.4, все прекрасно работает, а вот на боевоем что-то не заладилось.
так так так. вчера в полудреме написал с конца. начнем с начала. написал пхп класс для работы с мультикурл, написал сам, чтобы понимать его работу. есть список проксей, собственно запросы идут через них. Проверял работу на виндовс (денвер) - на ноуте (МТС) и на стационарном (домру), убунту (lamp+curl) (домру) и убунту (vps). не работает только на впс, точнее приходит ошибка 403. даже если указать с настройках курл другой интерфейс. начал разбираться. в консоли домашней убунты Код (Text): curl --location avito.ru приходит страница Код (Text): wget -O - avito.ru приходит страница с выбором города в консоли сервера после выполнения команды curl через пару секунд опять приглашение на ввод команды. если выполнить запрос wget, то видим что приходит 403 ошибка. Добавлено спустя 41 минуту 29 секунд: блин, даже на koding.com команда wget -O - avito.ru работает. похоже что-то с хостером не то.
я две недели понять не могу, а тут igordata с ходу догадался. хотя про команду wget я только вчера узнал. но все равно круто. риторический вопрос: что делать?
1) Пробовать другой хостинг. 2) Парсить авито с локалки и заливать на боевой сервер, еств, автоматизировав процесс. 3) Не парсить авито.
1) wget -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3" ибо в 80% установка юзер-агента решает проблему с 403 2) wget -help --proxy-user=ПОЛЬЗОВАТЕЛЬ установить ПОЛЬЗОВАТЕЛЯ в качестве имени пользователя для прокси. --proxy-password=ПАРОЛЬ установить ПАРОЛЬ в качестве пароля для прокси. вот 2 направления
сложный вопрос, я этого не знаю. с другой стороны я купил ночью еще один айпи и тут ж проверил - результат 403. соответственно для курла указываю CURLOPT_INTERFACE => "188.120.249.205" Код (Text): ubuntu@ubuntu:~$ traceroute avito.ru traceroute to avito.ru (80.76.156.73), 30 hops max, 60 byte packets 1 msk-130.ispsystem.net (188.120.240.130) 0.065 ms 0.026 ms 0.023 ms 2 edge.webdc.ru (92.63.108.89) 0.217 ms 0.206 ms 0.191 ms 3 46.46.168.173 (46.46.168.173) 13.610 ms 13.586 ms 13.543 ms 4 et1110-4.RT.TC2.AMS.NL.retn.net (87.245.232.114) 45.384 ms 44.855 ms 45.059 ms 5 amsix-gw1.ams.basefarm.net (195.69.145.42) 45.771 ms 46.219 ms 45.938 ms 6 sth4-gw01-ams-lnk.sth.basefarm.net (195.28.172.1) 63.287 ms 63.710 ms 63.452 ms 7 sth2-gw01-te0-1-0-4.sth.basefarm.net (80.76.159.69) 63.692 ms 63.131 ms 63.373 ms 8 sth2-cr01-xe-16-0-2.sth.basefarm.net (164.40.176.30) 65.113 ms 65.080 ms 65.052 ms 9 avi-cr01-ae0.sth.basefarm.net (164.40.176.38) 63.709 ms 63.767 ms 64.008 ms 10 *** ~~~~~~~~ 30 *** Добавлено спустя 3 минуты 22 секунды: Код (Text): ["http_code"]=> int(403) ["primary_ip"]=> string(12) "80.76.156.73" ["primary_port"]=> int(80) ["local_ip"]=> string(15) "188.120.249.205" ["local_port"]=> int(34108) ["redirect_url"]=> string(0) ""
Прокся прозрачная скорее всего была. Нужно пользовать не прозрачные и правильные заголовки отдавать wget у нас разве может работать со списками проксей? Или для каждого урла свой exec с wget дёргался?