2015-05-10 3 views
0

Я хочу проанализировать сайт, защищенный CloudFlare. И последняя строка в этом блоке:Ruby - Mechanize: get() throws exception

agent = Mechanize.new 
refs = agent.get(site).links_with(text: 'test') 

бросает исключение, и вот результат:

c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/mechanize-2.7.3/lib/mechanize/http/agent.rb:308:in 'fetch': 503 => Net::HTTPServiceUnvailable for <site> - unhandled response (Mechanize::ResponseCodeError) 
    from c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/mechanize-2.7.3/lib/mechanize.rb:440:in 'get' 
    from script.rb:10:in '<main>' 

Как это исправить?

+0

Я нашел этот модуль python: https://github.com/Anorov/cloudflare-scrape. Но я не знаю python и не могу реализовать один и тот же функционал на ruby ​​самостоятельно. –

+0

Что такое «сайт»? Серверу не понравился ваш запрос, возможно, вам нужно установить 'user_agent' или какой-нибудь другой заголовок – pguardiario

+0

У меня есть одна вещь: механизация не может работать с js. Могу ли я как-то разрешить это? –

ответ

0

Ошибка Спроецировать

Net::HTTPServiceUnvailable 

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

редактировать: вы можете использовать watir

+0

Сайт доступен. Но он использует систему защиты CloudFlare - DDoS. Если вы пользуетесь интернет-браузером, эта система будет проверять что-то (куки, я думаю). Итак, как я могу имитировать обычное поведение браузера? –

+0

@ Эд Ахметшин попробуйте камень под названием Ватир – Mhmd

+0

Драгоценный камень интересен, спасибо. Но мне нужно что-то, что будет более подходящим для синтаксического разбора. –

1

Вы можете связаться, чтобы увидеть, будут ли они в белый список ваших IP-адреса владельца сайта. То, что вы делаете, может выглядеть как атака &.