Akıllı Arama Motoru Yapılandırması

Akıllı Çevirici, belirli bir test alanı listesi için DNS ve TLS'nin engellemesini kaldıran bir strateji arar. Aralarından seçim yapabileceğiniz birden fazla stratejiyi açıklayan bir yapılandırma alır.

Akıllı Arama için YAML yapılandırması

Akıllı Arama Motoru'nun aldığı yapılandırma YAML biçimindedir. Örnek:

dns:
  - system: {}
  - https:
      name: 8.8.8.8
  - https:
      name: 9.9.9.9
tls:
  - ""
  - split:2
  - tlsfrag:1

fallback:
  - ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.2.3.4:9999/?outline=1

DNS Yapılandırması

  • dns alanı, test edilecek DNS çözümleyicilerin listesini belirtir.
  • Her DNS çözümleyici aşağıdaki türlerden biri olabilir:
    • system: Sistem çözümleyiciyi kullanın. Boş bir nesneyle belirtin.
    • https: HTTPS üzerinden şifrelenmiş DNS (DoH) çözümleyici kullanın.
    • tls: TLS üzerinden şifrelenmiş DNS (DoT) çözümleyici kullanın.
    • udp: UDP çözümleyici kullanın.
    • tcp: TCP çözümleyici kullanın.

DNS-over-HTTPS Çözümleyicisi (DoH)

https:
  name: dns.google
  address: 8.8.8.8
  • name: DoH sunucusunun alan adı.
  • address: DoH sunucusunun ana makine adı:bağlantı noktası. Varsayılan olarak name:443 değerine ayarlanır.

TLS üzerinden DNS çözümleyici (DoT)

tls:
  name: dns.google
  address: 8.8.8.8
  • name: DoT sunucusunun alan adı.
  • address: DoT sunucusunun ana makine:bağlantı noktası. Varsayılan olarak name:853 değerine ayarlanır.

UDP Çözümleyici

udp:
  address: 8.8.8.8
  • address: UDP çözümleyicinin ana makine:bağlantı noktası.

TCP Çözümleyici

tcp:
  address: 8.8.8.8
  • address: TCP çözümleyicinin ana makine:bağlantı noktası.

TLS Yapılandırması

  • tls alanı, test edilecek TLS aktarımlarının listesini belirtir.
  • Her TLS aktarımı, kullanılacak aktarımı belirten bir dizedir.
  • Örneğin, override:host=cloudflare.net|tlsfrag:1, Cloudflare ile alan önleme ve TLS parçalama kullanan bir aktarımı belirtir. Ayrıntılar için yapılandırma dokümanlarını inceleyin.

Yedek Yapılandırması

Proxy kullanmayan stratejilerden hiçbiri bağlanamazsa yedek yapılandırma kullanılır. Örneğin, kullanıcının bağlantısını denemek için yedek bir proxy sunucusu belirtebilir. Diğer DNS/TLS stratejilerinin başarısız olması/zaman aşımı alması gerektiğinden, yedek stratejinin kullanılması daha yavaş başlar.

Yedek dizeler şu şekilde olmalıdır:

  • configurl bölümünde tanımlandığı şekilde geçerli bir StreamDialer yapılandırma dizesi.
  • psiphon alanının alt öğesi olarak geçerli bir Psiphon yapılandırma nesnesi.

Shadowsocks sunucusu örneği

fallback:
  - ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.2.3.4:9999/?outline=1

SOCKS5 sunucusu örneği

fallback:
  - socks5://[USERINFO]@[HOST]:[PORT]

Psiphon yapılandırma örneği

Psiphon ağını kullanmak için:

  1. Ağlarına erişim sağlayan bir yapılandırma almak için Psiphon ekibiyle iletişime geçin. Bu işlem için sözleşme yapılması gerekebilir.
  2. Alınan Psiphon yapılandırmasını, Akıllı Arama Motoru yapılandırmanızın fallback bölümüne ekleyin. JSON, YAML ile uyumlu olduğundan Psiphon yapılandırmanızı doğrudan fallback bölümüne kopyalayıp yapıştırabilirsiniz. Örneğin:
fallback:
  - psiphon: {
      "PropagationChannelId": "FFFFFFFFFFFFFFFF",
      "SponsorId": "FFFFFFFFFFFFFFFF",
      "DisableLocalSocksProxy" : true,
      "DisableLocalHTTPProxy" : true,
      ...
    }

Akıllı çeviriciyi kullanma

Akıllı Arama özelliğini kullanmak için bir StrategyFinder nesnesi oluşturun ve test alan adlarının listesini ve YAML yapılandırmasını ileterek NewDialer yöntemini çağırın. NewDialer yöntemi, bulunan stratejiyi kullanarak bağlantı oluşturmak için kullanılabilecek bir transport.StreamDialer döndürür. Örneğin:

finder := &smart.StrategyFinder{
    TestTimeout:  5 * time.Second,
    LogWriter:   os.Stdout,
    StreamDialer: &transport.TCPDialer{},
    PacketDialer: &transport.UDPDialer{},
}

configBytes := []byte(`
dns:
  - system: {}
  - https:
      name: 8.8.8.8
  - https:
      name: 9.9.9.9
tls:
  - ""
  - split:2
  - tlsfrag:1
fallback:
  - ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.2.3.4:9999/?outline=1
`)

dialer, err := finder.NewDialer(
  context.Background(),
  []string{"www.google.com"},
  configBytes
)
if err != nil {
    // Handle error.
}

// Use dialer to create connections.

Bu temel bir örnektir ve özel kullanım alanınıza göre uyarlanması gerekebilir.