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.

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.