Shifter verwenden mit Ruby
Binden Sie Shifters Residential- und ISP-Proxys in wenigen Minuten in Ruby ein. Kompatibel mit Net::HTTP, HTTParty, Faraday, Mechanize und Watir -- funktioniert in einfachen Skripten, Sinatra und Rails.
Schnellstart
Installieren
gem install httparty Grundlegende Nutzung
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", ...} Funktionen
Beispiele
Net::HTTP (ohne Abhängigkeiten)
Die Ruby-Standardbibliothek reicht aus. Net::HTTP.start akzeptiert Proxy-Host, Port, Benutzername und Passwort -- keine Gems erforderlich. Am besten geeignet für kleine Skripte und Lambda-ähnliche Funktionen.
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 mit Sticky Session
Faraday ist Rubys flexibelster HTTP-Client — middleware-basiert, Adapter lassen sich jederzeit austauschen. Füge dem Proxy-Benutzernamen eine `sid` hinzu, um eine Residential IP für das gesamte Gespräch festzuhalten.
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 (formularbasiertes Crawling)
Mechanize automatisiert das Absenden von Formularen und das Verfolgen von Links. Konfiguriere den Proxy am Agent, und jede Seite, die er aufruft, läuft über 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 (produktiver HTTP-Dienst)
Binde Shifter hinter einem kleinen Rails-Dienst ein, damit jeder Controller und jeder Job dieselbe Proxy-Konfiguration verwendet. Rotation pro Anfrage oder Pinning pro Nutzer.
# 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 Häufig gestellte Fragen
Häufige Fragen zur Verwendung von Shifter mit Ruby.
Übergeben Sie Proxy-Host, Port, Benutzer und Passwort als 3. bis 6. Argument an Net::HTTP.new. Setzen Sie use_ssl = true für HTTPS-Ziele. Die Ruby-Standardbibliothek reicht aus - keine zusätzlichen Gems erforderlich.
Übergib http_proxyaddr, http_proxyport, http_proxyuser und http_proxypass als Optionen bei jedem HTTParty.get- bzw. post-Aufruf. Oder trage sie in default_options auf Klassenebene ein, damit jede Anfrage der Klasse Shifter verwendet.
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.
Füge dem Proxy-Benutzernamen eine Session-ID hinzu — zum Beispiel `customer-USERNAME-country-us-sid-123ABC`. Jede Ruby-Anfrage, die dieselbe Proxy-URL verwendet, nutzt dieselbe Residential IP. Füge `ttl-N` hinzu, um diese IP bis zu N Sekunden zu fixieren.
Ja. Binde den Proxy in eine Service-Klasse (oder eine Faraday-Verbindung in einem Initializer) ein und verwende ihn in Controllern und ActiveJob-Workern wieder. Dieselbe Proxy-URL funktioniert in synchronen und asynchronen (Sidekiq-)Kontexten.
Es wird kein Gem benötigt. Shifter spricht reines HTTP / SOCKS5 — konfiguriere deinen vorhandenen Client so, dass er auf `p.shifter.io:443` zeigt, und du bist fertig. Das hält dein Gemfile schlank und vermeidet Versions-Kopplung.
Shifter verwenden mit Ruby
Fügen Sie Shifters 205M+ Residential- und ISP-Proxys in weniger als 5 Minuten zu Ihrem Ruby- und Rails-Stack hinzu. Funktioniert mit Net::HTTP, HTTParty, Faraday und Mechanize.