LINUX.ORG.RU

vkapi выдает нерабочие ссылки если запрос идет из скрипта на питоне


1

2

Скрипт ищет музыку на втентакле и должен выдавать список песен. Вот код:

import md5
import urllib2
from xml.dom.minidom import *

def search(request):
    if request.method == 'POST':
        sq = request.POST['sq']
        vkapi_signature=md5.new('5807425api_id=1696393count=200method=audio.searchq=' + sq + 'test_mode=1v=2.0dTckAoaSzH').hexdigest()
        url_xml = 'http://api.vkontakte.ru/api.php?api_id=1696393&count=200&v=2.0&method=audio.search&sig=' + vkapi_signature + '&test_mode=1&q=' + sq
        song_list = parse(urllib2.urlopen(url_xml))
        music_list = []
        for song in song_list.getElementsByTagName('audio'):
            artist = song.getElementsByTagName('artist')[0].childNodes[0].nodeValue
            title = song.getElementsByTagName('title')[0].childNodes[0].nodeValue
            url = song.getElementsByTagName('url')[0].childNodes[0].nodeValue
            item = [artist, title, url]
            music_list.append(item)

Запрос проходит, ответ выдают, все нормально, только url-ы не настоящие. Если этот же запрос скармливать wget-y - все идет как надо. В чем может быть проблема?

★★★

Последнее исправление: gnunixon (всего исправлений: 1)

Может, в защите от грабберов? Попробуй, например, поставить такой же User-Agent, как у wget.

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

Я пробовал уже даже ставить через os.system('wget........'). Все равно не хочет. Что интересно, если этот же скрипт на питоне запустить на локальной машине - все идет как надо. Если запустить даже на том же серваке из консоли тоже все нормально идет. Проблема возникает только когда обращение идет с сайта.

Ну и раз хотят защиты, могли бы выдавать просто ошибку, зачем так издеваться?

gnunixon ★★★
() автор топика
Ответ на: комментарий от gnunixon

>Проблема возникает только когда обращение идет с сайта.
В каком смысле «с сайта»?

В любом случае, я бы сначала копал в сторону умышленного издевательства втентакля над тобой. Покажи весь HTTP-запрос с заголовками. Не выставляется ли там Referer?

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

Или X-Forwarded-For, или еще что-нибудь, отчего тентакль мог бы подумать, что ты за проксей сидишь?

Ну, если возможно, сравни запрос при вызове из консоли и вызове с сайта или как там.

proud_anon ★★★★★
()
Ответ на: комментарий от gnunixon

включите debug для httplib и весь query лучше собирать через urlencode, да

commit ★★
()

Ссылки которые отдаёт VK будут работать только для IP с которого они были запрошены.

pilotys
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.