2

Прежде всего я должен сказать, что есть много вопросов об этой ошибке, но я почти все перепробовал, но все же у меня есть.

URL = "https://cdn59.my.mail.ru/hv/55045204.mp4?sign=2cca46c09181dc952b3140f2ea3852d90cc2a19a&slave[]=s%3Ahttp%3A%2F%2F127.0.0.1%3A5010%2F55045204-hv.mp4&p=f&expire_at = 1438858800 & сенсорный = 1436155554 & область = 76"

Когда я использую wget $url это дает мне ошибку 503 сервиса Unavaible.

Затем я добавил свой пользовательский агент, например, wget -U 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.76 Safari/537.36' $url

СЕЙЧАС .Это дает мне 403 Запретную ошибку. Я также попробовал header or --no-check-certificate и их комбинации, но все же у меня есть какая-то досадная ошибка. (в URL есть несколько метасимволов, поэтому я использовал либо одинарную, либо двойную кавычку.)

Интересно, что я могу скачать его со всех браузеров, таких как Firefox, Chrome и т.д.

В чем может быть проблема с моей ссылкой?

ПРИМЕЧАНИЕ: я всегда обновляю URL, получая файл json из wget или браузера. Это реферер json url videoapi.my.mail.ru/videos/mail/pasha.44444/video/_myvideo/397.json

2 ответа2

1

Вам необходимо войти в сервис, и информация о сеансе, вероятно, хранится в файле cookie. Когда вы используете wget, вы не предоставляете (или не получаете и не используете) файл cookie, необходимый для получения информации о сеансе.

Может помочь кое-что из строк ответа на stackoverflow .

0

Я хочу сказать, что, наконец, мне удалось загрузить его с wget, несмотря на заголовок Access-Control-Allow-Origin.

#!/bin/bash
link="http://api.video.mail.ru/videos/mail/carpath1a/_myvideo/289.json"
name="BlaBlaBla"
mr480=$(printf "%s\n" "tmpvar=\$(wget -qO- --save-cookies=cookies \"\$link\" | perl -ne 's:.*\"key\"\:\"(.*?)\".*\"(http.*?)\".*:\$1\t\$2: && print') ; linktemp=\$(echo \"\$tmpvar\"|grep 480p|awk '{print \$2}') ; wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 10 --continue -nv --show-progress --load-cookies=cookies \"\$linktemp\" -O \$name-480 ; while [[ \$? = 8 ]];do wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 10 --continue -nv --show-progress --load-cookies=cookies \"\$linktemp\" -O \$name-480 ;done")
eval "$mr480" 
rm cookies

После повторения 2-10 раз через цикл while начинается загрузка. Я не мог понять, почему он отправляет 503 или 403, но я знаю, что эти два типа ошибок возвращаются с кодом 8 поэтому я использовал цикл while. ПРИМЕЧАНИЕ. Не используйте && вместо ; потому что если вы используете && он не запустится во время цикла, поэтому он завершится неудачно и завершит работу сценария.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .