Utilisez Shifter avec Ruby
Intégrez les proxies résidentiels et ISP de Shifter dans Ruby en quelques minutes. Compatible avec Net::HTTP, HTTParty, Faraday, Mechanize et Watir — fonctionne dans les scripts simples, Sinatra et Rails.
Démarrage rapide
Installer
gem install httparty Utilisation de base
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", ...} Fonctionnalités
Exemples
Net::HTTP (zéro dépendance)
La bibliothèque standard Ruby suffit. Net::HTTP.start accepte l'hôte proxy, le port, l'utilisateur et le mot de passe - aucun gem requis. Idéal pour les petits scripts et les fonctions de type 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 avec session persistante
Faraday est le client HTTP le plus flexible de Ruby — basé sur des middlewares, avec des adaptateurs interchangeables à volonté. Ajoutez un `sid` au nom d'utilisateur du proxy pour ancrer une IP résidentielle sur toute la conversation.
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 (exploration orientée formulaires)
Mechanize automatise la soumission de formulaires et le suivi de liens. Configurez le proxy sur l'agent et chaque page qu'il parcourt transite par 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 (service HTTP en production)
Encapsulez Shifter derrière un petit service Rails afin que chaque contrôleur ou job utilise la même configuration de proxy. Rotation par requête ou ancrage par utilisateur.
# 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 Foire aux questions
Questions fréquentes sur l'utilisation de Shifter avec Ruby.
Passez l'hôte, le port, l'utilisateur et le mot de passe du proxy en tant que 3e à 6e arguments de Net::HTTP.new. Définissez use_ssl = true pour les cibles HTTPS. La bibliothèque standard de Ruby suffit — aucune gem supplémentaire n'est nécessaire.
Passez http_proxyaddr, http_proxyport, http_proxyuser et http_proxypass en options sur n'importe quel appel HTTParty.get / post. Ou intégrez-les dans default_options au niveau de la classe afin que chaque requête émise par la classe utilise 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.
Ajoutez un identifiant de session au nom d'utilisateur du proxy — par exemple `customer-USERNAME-country-us-sid-123ABC`. Chaque requête Ruby utilisant la même URL de proxy réutilisera la même IP résidentielle. Ajoutez `ttl-N` pour ancrer cette IP pendant N secondes au maximum.
Oui. Encapsulez le proxy dans une classe de service (ou une connexion Faraday dans un initialiseur) et réutilisez-la dans les contrôleurs et les workers ActiveJob. La même URL de proxy fonctionne dans les contextes synchrones et asynchrones (Sidekiq).
Aucune gem n'est requise. Shifter utilise le protocole HTTP / SOCKS5 standard — configurez votre client existant pour pointer vers `p.shifter.io:443` et c'est tout. Cela garde votre Gemfile léger et évite tout couplage de version.
Commencer à utiliser Shifter avec Ruby
Ajoutez les 205M+ proxies résidentiels et ISP de Shifter à votre stack Ruby et Rails en moins de 5 minutes. Compatible avec Net::HTTP, HTTParty, Faraday et Mechanize.