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 gefragt FAQ-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.
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.