Это странный вариант, который каждый может воспроизвести дома (я думаю). Я пытаюсь написать простой сервис для запуска поисковых запросов в Twitter на службе, размещенной на EC2. Twitter возвращает мне ошибки в 100% случаев при запуске в рубине, но не на других языках, что указывает на то, что это не проблема блокировки IP-адресов. Вот пример:Twitter поиск api заблокирован от Amazon EC2 только в Ruby, а не завиток ... это Net :: HTTP?
[email protected]:~$ irb
irb(main):001:0> require 'net/http'
=> true
irb(main):002:0> res = Net::HTTP.post_form(URI.parse('http://search.twitter.com/search.json'), {'q' => 'twitter'})
=> #<Net::HTTPBadRequest 400 Bad Request readbody=true>
irb(main):003:0> exit
[email protected]:~$ curl http://search.twitter.com/search.json?q=twitter
{"results":[{"text":""Social Media and SE(Search Engine) come side by side to help promote your business and bran...<snip/>
Как вы видите, CURL работает, irb нет. Когда я бег на моем локальном поле окна в IRB, успех:
$ irb
irb(main):001:0> require 'net/http'
=> true
irb(main):002:0> res = Net::HTTP.post_form(URI.parse('http://search.twitter.com/search.json'), {'q' => 'twitter'})
=> #<Net::HTTPOK 200 OK readbody=true>
Это сбивает с толком ... если есть какое-то основная ошибка в Net :: HTTP, я думаю, было бы показать, как на окнах и linux, и если я заблокирован своим IP-адресом, то завиток тоже не должен работать. Я попробовал это на новом экземпляре Amazon со свежим IP addy.
Любой должен быть в состоянии Репрографический эту «причину я использую ec2onrails Ami:
ec2-run-instances ami-5394733a -k testkeypair
Просто SSH после этого и запустить эти простые линии выше. У кого-нибудь есть идеи, что происходит?
Спасибо!
Право, это было первое, что я считал, но если я бил макс, то ротор отправлен запрос сразу же после этого следует также сообщить о сбое. Я использую экземпляр, связанный со статическим IP-адресом, и я проверил, и запросы действительно поступают из выделенного статического IP-адреса. Тело ответа добавляет немного информации: " \ п
\ пВаш браузер послал запрос, что этот сервер не мог понять.
\ п " – esilver\ п
И php также терпит неудачу с ошибкой 400. Было бы разумно, если бы это была простая проблема с блокировкой IP, но факт остается фактом, что завиток из командной строки работает ... Я задаюсь вопросом, добавляет ли curl некоторый заголовок (возможно, пользовательский агент?), Который щебет любит см. ... Я собираюсь просто написать код для ручного вызова curl из моего ruby-скрипта. – esilver
Это пустая строка пользовательского агента. Это не имело никакого отношения к тому, что листы запроса были удалены. Я решил эту проблему в одной строке в рубине: Twitter :: Search.default_options = {: заголовок => { 'User-Agent' => 'YOUR_USER_AGENT_STRING'}} Я также подал вопрос с щебет жемчужиной jnunemaker на github – esilver