Получение веб-страницы с использованием запросов занимает слишком много времени при работе с сервером Cloudflare, но быстро работает в браузере и curl

Я пытаюсь прочитать RSS-канал с помощью FeedParser. Но программа зависает при использовании requests, feedparser или urlopen. Страница, которую я пытаюсь получить, находится здесь (rss-канал mangastream.com)

Я могу просмотреть его в браузере или получить с помощью curl в терминале.

>>> import feedparser
>>> feed = feedparser.parse('http://mangastream.com/rss')

Он не пройдет дальше строки 2.

введите здесь описание изображения

Изменить. Может ли это быть проблемой с сервером cloudflare? Какая-то защита от DoS/ботов? Но это работает в завитке. Не за прокси или что-то в этом роде.

Редактировать. Каким-то образом это работает, но по-прежнему занимает много времени (более 2-3 минут). С curl работает намного быстрее.


person Mark Evans    schedule 22.01.2017    source источник
comment
Не удается воспроизвести, можете ли вы рассказать подробнее о своей настройке?   -  person Jesse Bakker    schedule 22.01.2017
comment
urllib и requestsработает....   -  person 宏杰李    schedule 22.01.2017
comment
Настройка @JesseBakker? :/ Я использую Ubuntu, Python 3.5 внутри virtualenv. Я протестировал другой URL-адрес ( httpbin.org ), поэтому процесс python может получить доступ к сети.   -  person Mark Evans    schedule 22.01.2017
comment
У меня работает Feedparser с аналогичной настройкой   -  person Jesse Bakker    schedule 22.01.2017


Ответы (1)


Это похоже на проблему с Cloudflare на моей стороне. Замена имени хоста на IP-адрес и передача имени домена в качестве заголовка host работает.

>>> import requests
>>> requests.get("http://104.28.18.11/rss", headers={'host':'mangastream.com'})
<Response [200]>

Источник

person Mark Evans    schedule 22.01.2017