Geliştiriciler
Bir istemcinin hangi protokole yönlendirileceği ve proxy geçirildikten sonra istemcide hangi socks5 ya da socks5h şemasının ayarlanacağı.
SOCKS5 taşıma katmanında çalışan bir proxy protokolüdür: sizin adınıza bir bağlantı açar ve baytları, içlerinde ne olduğunu okumadan ya da yeniden yazmadan taşır. Sattığımız her statik ISP proxy, zaten elinizde olan sipariş üzerinde HTTP ile SOCKS5 arasında geçirilebilir.
Protokol değiştirmek farklı bir ürün değildir: zaten elinizde olan proxy'yi panelden ya da API'den geçirirsiniz ve sipariş, bağlanmak için yeni port ve kimlik bilgileriyle güncellenir.
Kısacası: SOCKS5 bir adres türü değil, bir proxy protokolüdür: bir TCP bağlantısını, içinde ne olduğunu okumadan ya da yeniden yazmadan aktarır. ProxyJam’in sattığı her statik residential (ISP) proxy, HTTPS’i de taşıyan HTTP ya da SOCKS5 üzerinden çalışır ve ikisi arasında zaten elinizde olan sipariş üzerinde geçiş yaparsınız; geçişten sonra siparişin gösterdiği port ve kimlik bilgileriyle bağlanın.
SOCKS5, istemcinizin TCP bağlantısı açabildiği her şeyi taşır; buna bir HTTP proxy’nin iletemeyeceği trafik de dahildir ve baytları dokunmadan geçirir. Bu onu bir veritabanı istemcisi, bir SSH oturumu ya da HTTP konuşmayan herhangi bir araç için doğal seçim yapar. Yapmadığı şey, adresin ne olduğunu değiştirmektir. Proxy protokolü istemciniz ile proxy arasında konuşulur; uzak uçtaki site, proxy’nin adresinden gelen bir bağlantı ve bir HTTP proxy’nin eklemeyi seçtiği başlıkları görür. Bu yüzden sorulmaya değer soru hangi protokolün satın alınacağı değildir. Adresin hangi ağa ait olduğudur ve orada yanıt, adı belirtilen bir internet sağlayıcısıdır; Amerika Birleşik Devletleri’nde bunların sayısı 19.
SOCKS sürüm 5, 1996’da RFC 1928 olarak yayımlandı: SOCKS sürüm 4’ü UDP, kimlik doğrulama yöntemleri için bir çerçeve ve alan adı ya da IPv6 adresi olarak verilen hedeflerle genişleten bir güvenlik duvarı geçiş protokolü. İstemci desteklediği kimlik doğrulama yöntemlerini sunar ve sunucu birini seçer; ardından istemci giden bir bağlantı (CONNECT), dinleyen bir port (BIND) ya da bir UDP aktarımı (UDP ASSOCIATE) ister. Kullanıcı adı ve parola ile giriş kendi kısa belirtimidir, RFC 1929; parolayı açık metin olarak gönderir, bu yüzden önemli olduğu yerde tünelin içindeki trafiği şifreli tutun.
socks5 ve socks5h şemalarının arasında seçim yaptığı şey alan adı seçeneğidir. curl’ün kılavuzu --socks5 seçeneğini proxy’yi kullanan “but resolve the hostname locally” (ama host adını yerelde çözümle) olarak, --socks5-hostname seçeneğini ise “the proxy resolve the hostname” (host adını proxy çözümlesin) diyen varyant olarak tanımlar. Bir proxy URL’sinde socks5:// ilk davranışı, socks5h:// ikincisini verir; Everything curl içindeki tablo bunu ortaya koyar. HTTPS taşıyan bir HTTP proxy ise normalde bunun yerine adı alır: bir CONNECT isteği hedef host ve portu adıyla belirtir ve proxy ona tüneli açar (RFC 9110, bölüm 9.3.6). UDP aktarımı SOCKS5 belirtiminin parçasıdır, ancak uygulamalar bu konuda farklılaşır; aşağıdaki SSS bunun bizim proxy’lerimizde ne anlama geldiğini söyler.
Bir sunucuda zaten bir SSH girişiniz varsa, satın almadan bir SOCKS5 proxy’niz vardır. ssh -N -D 1080 user@server, OpenBSD ssh kılavuzunun yerel “dynamic” (dinamik) uygulama düzeyinde port yönlendirmesi dediği şeyi kurar: ssh makinenizde 1080 numaralı portu dinler ve “will act as a SOCKS server” (bir SOCKS sunucusu gibi davranır); her bağlantıyı şifreli SSH kanalı üzerinden taşır ve onu uzak makineden açar. -N işi yönlendirmeyle sınırlar, uzak bir kabuk açılmaz. Bir istemciyi socks5h://127.0.0.1:1080 adresine yönlendirin; trafiği sunucudan çıkar.
Satın alınmış bir SOCKS5 proxy’den farkı, bağlantının nereden çıktığıdır. Bir SSH tüneli üzerinden, uzak uçtaki site SSH sunucusunun adresini ve o sunucunun ait olduğu ağı görür; kiralık bir sunucu için bu genellikle bir barındırma şirketinin ağıdır. SSH sizinle sunucu arasındaki ayağı şifreler; sunucudan siteye trafik zaten neyse odur. SOCKS5’e geçirilmiş bir ProxyJam proxy’si, ödeme sırasında ülke ve operatöre göre seçilen, adı belirtilen bir internet sağlayıcısının ağındaki bir adresten çıkar ve ona arada SSH olmadan ve çalıştırmanız gereken kendi sunucunuz olmadan, siparişteki port ve kimlik bilgileriyle doğrudan bağlanırsınız.
Yani ikisi farklı soruları yanıtlar. SSH üzerinden bir tünel, trafiği zaten kontrol ettiğiniz bir makineden dışarı gönderir. Bir ISP adresindeki SOCKS5 proxy, çıkış adresinin kendisinin, yani onun bir sorgusunun hangi ağı gösterdiğinin önemli olduğu işler içindir.
Üç kısa alışveriş ve hiçbirinde proxy'nin trafiğinizi anlaması gerekmez.
İstemciniz proxy’yi selamlar ve kimlik doğrulama üzerinde anlaşır. Desteklediği yöntemleri sunar; proxy istediğini adıyla belirtir. Bizim adreslerimizde bu bir kullanıcı adı ve paroladır ya da bunun yerine kendi IP’nizi beyaz listeye eklediyseniz hiçbir şeydir.
İstemciniz bir hedef ister. Bir host ve bir port; ya bir adres ya da bir ad olarak gönderilir. İlginç olan adı göndermektir: proxy onu çözümler, böylece sorgu sizin ağınızdan değil proxy’nin ağından çıkar.
Bundan sonra proxy yalnızca baytları taşır. Yükü ayrıştırmaz, başlık eklemez ve bir web sayfası mı, bir veritabanı oturumu mu yoksa bir e-posta aktarımı mı taşıdığını bilmez. Bir HTTP proxy yerine SOCKS5’i seçmenin bütün nedeni bu ilgisizliktir.
| HTTP proxy | CONNECT ile HTTPS | SOCKS5 | |
|---|---|---|---|
| Neyi taşıyabilir | Yalnızca HTTP istekleri | Adı verilen host ve porta bir TCP tüneli | Herhangi bir TCP akışı |
| Proxy yükü okur mu | Evet, isteği ayrıştırır | Hayır, tünel açıldıktan sonra | Hayır, hiçbir aşamada |
| Başlıklarınızı değiştirebilir mi | Evet, onları iletir ve Via gibi kendi başlıklarını ekleyebilir | Hayır, tünel açıldıktan sonra | Hayır, başlık diye bir kavramı yoktur |
| Host adı nerede çözümlenir | Proxy'de | Proxy'de, çünkü CONNECT host'u adıyla belirtir | Sizin seçiminiz, iki uçtan birinde |
| Tipik istemci desteği | HTTP araçlarında evrensel | HTTP araçlarında evrensel | Komut satırı araçlarında yaygın; bazı kütüphaneler ek bir paket gerektirir |
| En uygun olduğu iş | Sade web istekleri | Sıradan HTTPS gezinme ve kazıma | Web dışı protokoller ve karışık trafik |
Bir istemcinin hangi protokole yönlendirileceği ve proxy geçirildikten sonra istemcide hangi socks5 ya da socks5h şemasının ayarlanacağı.
Bir istemcinin hangi protokole yönlendirileceği ve zaten elinizde olan proxy'nin panelden ya da API'den nasıl geçirileceği.
Panelden ya da sipariş üzerinde tek bir API çağrısıyla; yalnızca istemciyi değiştirmek yetmez. Proxy geçiş sırasında kısa bir süre kullanılamayabilir.
HTTP üzerinden bağlandığınız değerleri yeniden kullanmayın.
Host adlarını proxy’nin çözümlemesi için socks5h://USERNAME:PASSWORD@HOST:PORT, onları kendi tarafınızda çözümlemek için socks5://.
curl -x socks5h://USERNAME:PASSWORD@HOST:PORT https://example.com/.
Python’da requests, bir socks5h:// proxy URL’si çalışmadan önce SOCKS ekine ihtiyaç duyar: pip install requests[socks].
import requests
# HOST, PORT, USERNAME, PASSWORD come with your order (dashboard or API)
proxy = "http://USERNAME:PASSWORD@HOST:PORT"
proxies = {
"http": proxy,
"https": proxy,
}
response = requests.get(
"https://example.com/",
proxies=proxies,
)
print(response.status_code)
# HOST, PORT, USERNAME, PASSWORD come with your order (dashboard or API)
curl -x http://USERNAME:PASSWORD@HOST:PORT \
https://example.com/
import axios from "axios";
import { HttpsProxyAgent } from "https-proxy-agent";
// HOST, PORT, USERNAME, PASSWORD come with your order (dashboard or API)
const proxy = "http://USERNAME:PASSWORD@HOST:PORT";
const agent = new HttpsProxyAgent(proxy);
const response = await axios.get(
"https://example.com/",
{
httpAgent: agent,
httpsAgent: agent,
},
);
console.log(response.status);
package main
import (
"fmt"
"net/http"
"net/url"
)
func main() {
// HOST, PORT, USERNAME, PASSWORD come with your order (dashboard or API)
proxy, _ := url.Parse(
"http://USERNAME:PASSWORD@HOST:PORT")
client := &http.Client{Transport: &http.Transport{
Proxy: http.ProxyURL(proxy),
}}
res, _ := client.Get("https://example.com/")
fmt.Println(res.Status)
}
Aşağıdaki örnekler, bir siparişin başladığı protokol olan HTTP üzerinden bağlanır. SOCKS5 kullanmak için önce proxy'nin kendisini panelden ya da tek bir API çağrısıyla geçirin; sipariş bundan sonra kullanılacak portu ve kimlik bilgilerini gösterir. İstemcide şemayı socks5 olarak ya da host adını proxy'nin çözümlemesini istiyorsanız socks5h olarak değiştirin ve o portu ve o kimlik bilgilerini kullanın. Bunun için Python'da requests[socks], Node.js'te ise HTTPS ajanının yerine bir SOCKS ajanı gerekir.
Aşağıdaki yanıtlar satış koşullarımızı belirtir ve bunu yapan her biri bizi ona bağlayan belgeye bağlantı verir.
SOCKS5, RFC 1928'de tanımlanan ve taşıma katmanında çalışan bir proxy protokolüdür. İstemciniz proxy'den bir host ve porta bağlantı açmasını ister, proxy onu açar ve o andan itibaren baytları yorumlamadan iki yönde de iletir. Taşıdığını hiçbir zaman ayrıştırmadığı için web trafiğiyle sınırlı değildir: TCP üzerinden çalışan her şey ondan geçebilir.
Bir HTTP proxy HTTP'yi anlar. İstek satırını ve başlıkları okur ve onları eklemekte, kaldırmakta ya da yeniden yazmakta serbesttir; bazı proxy'lerin sizin ayarlamadığınız bir başlıkta sessizce kendilerini duyurmasının nedeni budur. SOCKS5'in başlık diye bir kavramı hiç yoktur: bir hedef ve bir bayt akışı görür. Trafiğiniz HTTP değilse ya da aradaki hiçbir şeyin onu düzenleyememesini tercih ediyorsanız seçilecek olan SOCKS5'tir.
Hayır, bir HTTP proxy de şifrelemez. SOCKS5 sizi proxy'ye karşı doğrular ve ardından baytları iletir. Belirtim bir kimlik doğrulama yönteminin kendi korumasını eklemesine izin verir, ancak kullanıcı adı ve parola ile kimlik doğrulama (RFC 1929) parolayı açık metin olarak gönderir ve sonrasında hiçbir şeyi korumaz. İçerideki trafik HTTPS ya da SSH ise zaten uçtan uca şifrelidir ve proxy onu okuyamaz. İçerideki trafik düz metinse düz metin olarak kalır; bu yüzden SOCKS5'i bir şifreleme katmanı olarak görmeyin.
DNS sorgusunun yerini değiştirir. socks5 ile istemciniz host adını yerelde çözümler ve proxy'den ortaya çıkan adrese bağlanmasını ister. socks5h ile istemciniz adı gönderir ve proxy onu çözümler. Bu iki açıdan önemlidir: kendi çözümleyiciniz hangi hostları ziyaret ettiğinizi hiçbir zaman görmez ve proxy'nin ağının aldığı yanıtı alırsınız; coğrafyaya göre değişen bir host adı için bu çoğu zaman evde alacağınız yanıt değildir.
UDP ASSOCIATE, RFC 1928'de yer alır; belirli bir istemcinin ya da sunucunun onu uygulayıp uygulamadığı değişir, bu yüzden varsaymak yerine iki ucu da kontrol edin. Proxy'lerimiz için UDP desteği yayımlamadık; bu yüzden TCP'ye göre plan yapın ve UDP'ye dayanan bir şey kurmadan önce desteğe sorun.
Hayır. Zaten elinizde olan proxy'yi HTTPS'i de taşıyan HTTP ile SOCKS5 arasında geçirirsiniz: panelden ya da aynı sipariş üzerinde API'ye tek bir çağrıyla. Bu yalnızca bir istemci ayarı değildir: geçiş proxy üzerinde yapılır, sipariş yeni protokol, port ve kimlik bilgileriyle güncellenir ve bu sırada proxy kısa bir süre kullanılamayabilir. Proxy ödediğiniz dönemin tamamı boyunca sizin kalır; yanıt vermeyi bırakırsa ya da belirttiğiniz bir hedefte engellenirse takvim ayı başına siparişin en fazla %20'si için ücretsiz değiştirilir ve ilk sipariş, test etmenin geçersiz kılmadığı, en fazla 10 IP'yi kapsayan 24 saatlik bir iade hakkı taşır. Hizmet Şartları
--socks5 host adını yerelde çözümler, --socks5-hostname onu proxy’nin çözümlemesine bırakırsocks5:// ve socks5h:// ve host adını hangi ucun çözümlediği-D yerel dinamik port yönlendirmesini kurar ve ssh bir SOCKS4 ve SOCKS5 sunucusu gibi davranır; -N uzak bir komut çalıştırmadan portları yönlendirir