Integración

Usa Shifter con Ruby

Conecta los proxies residenciales y de ISP de Shifter a Ruby en minutos. Compatible con Net::HTTP, HTTParty, Faraday, Mechanize y Watir: funciona en scripts simples, Sinatra y Rails.

Inicio rápido

Instalar

gem install httparty

Uso básico

require 'httparty'

response = HTTParty.get(
  'https://ipinfo.io/json',
  http_proxyaddr: 'p.shifter.io',
  http_proxyport: 443,
  http_proxyuser: 'customer-USERNAME-country-us-sid-123ABC',
  http_proxypass: 'PASSWORD',
  timeout: 30
)

puts response.parsed_response
# {"ip" => "154.16.xxx.xxx", "city" => "New York", "country" => "US", ...}

Características

Soporte directo para Net::HTTP, HTTParty, Faraday, Mechanize, RestClient y cualquier cliente HTTP que acepte una URL de proxy
Rotación por solicitud de forma predeterminada, con `sid` para sesiones persistentes y `ttl-N` para fijar IPs durante N segundos
Compatible con Ruby 2.7 y todas las versiones de Ruby 3.x, incluida la 3.3
Protocolos HTTP, HTTPS y SOCKS5 en el mismo endpoint de pasarela
Geolocalización en más de 195 países mediante parámetros de nombre de usuario, sin necesidad de ninguna gema adicional
Compatible de forma directa con Sinatra, Rails, Hanami y cualquier framework Ruby personalizado, sin dependencia de ningún SDK

Ejemplos

Net::HTTP (sin dependencias)

La biblioteca estándar de Ruby es suficiente. Net::HTTP.start acepta host, puerto, usuario y contraseña del proxy; no se necesitan gemas. Ideal para scripts pequeños y funciones de tipo Lambda.

require 'net/http'
require 'uri'
require 'json'

PROXY_HOST = 'p.shifter.io'
PROXY_PORT = 443
PROXY_USER = 'customer-USERNAME-country-uk-sid-456DEF'
PROXY_PASS = 'PASSWORD'

uri = URI('https://example.co.uk/products')

http = Net::HTTP.new(
  uri.host,
  uri.port,
  PROXY_HOST,
  PROXY_PORT,
  PROXY_USER,
  PROXY_PASS
)
http.use_ssl = true
http.read_timeout = 30

req = Net::HTTP::Get.new(uri.request_uri)
req['User-Agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36'

response = http.request(req)
puts "Status: #{response.code}, length: #{response.body.length}"

Faraday con sesión persistente

Faraday es el cliente HTTP más flexible de Ruby: basado en middleware, permite cambiar adaptadores a voluntad. Añade un `sid` al nombre de usuario del proxy para fijar una IP residencial durante toda la conversación.

require 'faraday'
require 'securerandom'

sid = SecureRandom.hex(4)

conn = Faraday.new(
  url: 'https://example.de',
  proxy: "customer-USERNAME-country-de-city-berlin-sid-#{sid}-ttl-300:PASSWORD@p.shifter.io:443",
  request: { timeout: 30 },
  headers: { 'User-Agent' => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36' }
)

login     = conn.post('/login', { email: 'user@example.com', password: 'secret' }.to_json,
                      'Content-Type' => 'application/json')
dashboard = conn.get('/dashboard')
orders    = conn.get('/orders')

puts [login.status, dashboard.status, orders.status].inspect

Mechanize (rastreo con soporte de formularios)

Mechanize automatiza el envío de formularios y el seguimiento de enlaces. Configura el proxy en el agente y cada página que visite pasará por Shifter.

require 'mechanize'

agent = Mechanize.new
agent.set_proxy('p.shifter.io', 443,
                'customer-USERNAME-country-us-city-newyork-sid-789GHI',
                'PASSWORD')
agent.user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
agent.read_timeout = 30

page = agent.get('https://example.com/login')

form = page.form('login')
form.email = 'user@example.com'
form.password = 'secret'
dashboard = form.submit

dashboard.links_with(href: %r{/orders/\d+}).each do |link|
  order = link.click
  puts order.search('h1').text.strip
end

Rails (servicio HTTP en producción)

Envuelve Shifter en un pequeño servicio de Rails para que cada controlador o job use la misma configuración de proxy. Rota por solicitud o fija por usuario.

# app/services/shifter_client.rb
require 'faraday'
require 'faraday/retry'

class ShifterClient
  PROXY_HOST = 'p.shifter.io:443'

  def initialize(country: 'us', sid: nil)
    sid_part  = sid ? "-sid-#{sid}" : ''
    proxy_url = "customer-USERNAME-country-#{country}#{sid_part}:PASSWORD@#{PROXY_HOST}"

    @conn = Faraday.new(proxy: proxy_url, request: { timeout: 30 }) do |f|
      f.request :retry, max: 3, interval: 1.0, backoff_factor: 2
      f.response :json
      f.adapter Faraday.default_adapter
    end
  end

  def get(url)
    @conn.get(url)
  end
end

# In a controller or job:
class ProductsController < ApplicationController
  def index
    client = ShifterClient.new(country: 'uk', sid: current_user.id)
    @products = client.get('https://example.co.uk/products.json').body
  end
end
Preguntas frecuentes

Preguntas frecuentes

Preguntas frecuentes sobre el uso de Shifter con Ruby.

Pasa el host, el puerto, el usuario y la contraseña del proxy como los argumentos 3 al 6 de Net::HTTP.new. Establece use_ssl = true para destinos HTTPS. La biblioteca estándar de Ruby es suficiente; no se necesitan gemas adicionales.

Pasa http_proxyaddr, http_proxyport, http_proxyuser y http_proxypass como opciones en cualquier llamada a HTTParty.get / post. O inclúyelos en default_options a nivel de clase para que todas las solicitudes de esa clase usen Shifter.

Yes. Pass a `proxy` option when constructing the Faraday connection. The format is `http://USER:PASS@p.shifter.io:443`. Faraday's middleware stack — retry, JSON parsing, logging — composes on top.

Añade un ID de sesión al nombre de usuario del proxy, por ejemplo `customer-USERNAME-country-us-sid-123ABC`. Cada solicitud de Ruby que use la misma URL de proxy reutilizará la misma IP residencial. Añade `ttl-N` para fijar esa IP durante un máximo de N segundos.

Sí. Envuelve el proxy en una clase de servicio (o una conexión Faraday en un inicializador) y reutilízalo en controladores y workers de ActiveJob. La misma URL de proxy funciona en contextos síncronos y asíncronos (Sidekiq).

No se necesita ninguna gema. Shifter habla HTTP / SOCKS5 estándar: configura tu cliente existente para que apunte a `p.shifter.io:443` y listo. Esto mantiene tu Gemfile ligero y evita el acoplamiento de versiones.

Comenzar

Empieza a usar Shifter con Ruby

Añade los más de 205M de proxies residenciales y de ISP de Shifter a tu stack de Ruby y Rails en menos de 5 minutos. Compatible con Net::HTTP, HTTParty, Faraday y Mechanize.

Prueba Shifter gratisConfiguración en minutos. Cancela cuando quieras.