Есть VPS, на нем стоит 3proxy. На php с помощью curl получаю ссылки для скачивания двумя способами:
1. через api
2. Путем прямого парсинга контакта
В обоих случаях частенько урл для закачки не работают почему-то при загрузке через php.
Причем что интересно, если взять, например, firefox, и прописать в нем в прокси ip vps-сервера, и попробовать вставить урл, полученный из php скрипта на VPS сервере, то этот урл никогда не работает (хотя должен, ведь в вконтакте идет привязка урл mp3 к ip-адресу).
А если через этот же файрфокс, например, получить ссылку на mp3 как через api, так и путем парсинга vk, то ссылка работает в файрфоксе. А также эта ссылка работает и в скрипте php на сервере. Как так получается? Есть ли у кого-то подобные проблемы? Может у контакта защита какая-то, что он такие нерабочие ссылки выдает? Или я что-то не учел? Заранее спасибо.
Update:
С помощью php на VPS получил адрес "
cs9-15v6.vk.me/p17/508c2a0395d968.mp3?extra=AEPUWH..."
Причем домен cs9-15v6.vk.me у меня вообще не резолвится, тут
www.host-tracker.com/InstantCheck/ResultComplete/a... то не резолвится, то ошибка 302 с разных серверов. Как так? Есть профи в этом разбирающиеся? Кстати, по этому урл используя php и VPS удалось загрузить песню, как не странно...
Решение:
Ура, получилось! Оказалось, что cs9-15v6.vk.me - это ipv6 адрес, у vps был ipv6 адрес, и, видимо, к контакту он подключался через этот адрес, а контакт ему в ответ тоже возвращал ipv6. Отключил ipv6 у себя на vps - и все стало работать нормально. Ура! И как все намного шустрее заработало! Вывод - ipv6 - зло. По крайней мере в моей ситуации.
ipv6 отключал так:
nano /etc/sysctl.conf
В конец эти строки:
# IPv6 disabled
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
Затем
sysctl -p
И проверяем
ifconfig
Строк с ipv6 быть не должно. Ура!)