HTTP proxy, Telegram botunuzun isteklerini bir aracı sunucu üzerinden göndermesini sağlar; böylece gerçek IP adresi gizlenir ve ağ kısıtlamaları aşılabilir. Bu makale, Python kullanarak Telegram botunuz için proxy'yi nasıl yapılandıracağınızı, farklı proxy türlerini ve kimlik doğrulama yöntemlerini ayrıntılı olarak anlatır.
Telegram botları için proxy'leri anlamak
Telegram botunuzda proxy kullanmak birkaç açıdan faydalı olabilir:
- Coğrafi kısıtlamaları aşma: Telegram'ın engellenmiş olabileceği bölgelerde hizmetlerine erişin.
- Gelişmiş gizlilik: daha fazla anonimlik için botunuzun IP adresini gizleyin.
- Yük dengeleme: performansı artırmak için trafiği birden fazla sunucuya dağıtın.
- Rate limit'leri aşma: Telegram API istek limitlerinden kaçınmak için birden fazla proxy kullanın (sorumlu ve etik biçimde kullanın).
Proxy türleri
Kullanabileceğiniz birkaç proxy türü vardır:
- HTTP(S) proxy'ler: uygulama katmanında çalışır ve genellikle web trafiği için kullanılır. HTTPS proxy'ler şifreleme sunar.
- SOCKS4 proxy'ler: her tür trafiği taşıyabilen daha alt seviye bir protokol, ancak kimlik doğrulamayı desteklemez.
- SOCKS5 proxy'ler: SOCKS4'ün gelişmiş sürümü; kimlik doğrulamayı destekler ve UDP trafiğini taşıyabilir.
İşte bir karşılaştırma tablosu:
| Özellik | HTTP(S) | SOCKS4 | SOCKS5 |
|---|---|---|---|
| Protokol | HTTP | SOCKS4 | SOCKS5 |
| Trafik türü | HTTP(S) | Her tür | Her tür |
| Kimlik doğrulama | Evet | Hayır | Evet |
| Şifreleme (HTTPS) | Evet | Hayır | Evet |
| UDP desteği | Hayır | Hayır | Evet |
| Karmaşıklık | Orta | Düşük | Yüksek |
Doğru proxy türünü seçmek
En iyi proxy türü ihtiyaçlarınıza bağlıdır:
- Temel web istekleri için HTTP(S) proxy'ler çoğu zaman yeterlidir.
- Farklı trafik türlerini taşımanız ve kimlik doğrulama gerekiyorsa SOCKS5 iyi bir seçimdir.
- SOCKS4, kimlik doğrulama desteği olmadığı için genellikle önerilmez.
python-telegram-bot kütüphanesi ile proxy kurulumu
python-telegram-bot kütüphanesi, proxy'leri botunuza entegre etmek için pratik bir yol sunar. Proxy'yi şöyle yapılandırırsınız:
Ön koşullar
-
python-telegram-botkütüphanesini kurun:bash pip install python-telegram-bot -
Bir proxy sunucu adresi edinin (örneğin
http://your_proxy_address:port) ve gerekiyorsa kimlik bilgilerini (kullanıcı adı ve şifre) alın.
Kod örneği: HTTP(S) proxy kullanımı
import telegram
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
# Kendi bot token'iniz ve proxy bilgilerinizle degistirin
TOKEN = "YOUR_BOT_TOKEN"
PROXY_URL = "http://your_proxy_address:port" # veya HTTPS icin "https://your_proxy_address:port"
PROXY_USERNAME = "your_username" # Istege bagli
PROXY_PASSWORD = "your_password" # Istege bagli
def start(update, context):
context.bot.send_message(chat_id=update.effective_chat.id, text="I'm a bot, please talk to me!")
def echo(update, context):
context.bot.send_message(chat_id=update.effective_chat.id, text=update.message.text)
def main():
# Proxy nesnesi olustur
request_kwargs = {
'proxy_url': PROXY_URL,
}
# Gerekiyorsa kimlik dogrulama ekle
if PROXY_USERNAME and PROXY_PASSWORD:
request_kwargs['urllib3_proxy_kwargs'] = {
'username': PROXY_USERNAME,
'password': PROXY_PASSWORD,
}
# Proxy ile bot ornegi olustur
bot = telegram.Bot(token=TOKEN, request_kwargs=request_kwargs)
# Updater olustur ve bot token'ini ilet
updater = Updater(bot=bot, use_context=True)
# Handler kaydi icin dispatcher'i al
dp = updater.dispatcher
# Komut handler'lari ekle
dp.add_handler(CommandHandler("start", start))
# Mesaj handler'i ekle
dp.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))
# Botu baslat
updater.start_polling()
# Ctrl-C basana veya surec SIGINT, SIGTERM ya da SIGABRT alana kadar
# botu calistir. Cogu durumda bu kullanilmalidir, cunku
# start_polling() bloklamaz ve botu duzgun sekilde durdurur.
updater.idle()
if __name__ == '__main__':
main()
Açıklama:
- Gerekli modülleri import edin:
telegram,Updater,CommandHandler,MessageHandlerveFilters. - Bot token'ınızı ve proxy bilgilerinizi tanımlayın: yer tutucuları gerçek değerlerinizle değiştirin.
request_kwargsoluşturun: bu sözlük proxy URL'sini tutar.- Kimlik doğrulama ekleyin (gerekiyorsa): proxy'niz kimlik doğrulama istiyorsa
request_kwargsiçine kullanıcı adı ve şifrenizle birlikteurllib3_proxy_kwargsekleyin. - Bir
telegram.Botörneği oluşturun: proxy'yi yapılandırmak içinrequest_kwargssözlüğünü iletin. - Bir
Updaterörneği oluşturun: bot nesnesini Updater'a iletin. - Handler'ları kaydedin: botunuza komut ve mesaj handler'ları ekleyin.
- Polling'i başlatın: güncellemeleri dinlemesi için botu başlatın.
Kod örneği: SOCKS5 proxy kullanımı
import telegram
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
# Kendi bot token'iniz ve proxy bilgilerinizle degistirin
TOKEN = "YOUR_BOT_TOKEN"
PROXY_URL = "socks5://your_proxy_address:port" # veya hostname'in proxy sunucuda cozulmesi icin "socks5h://your_proxy_address:port"
PROXY_USERNAME = "your_username" # Istege bagli
PROXY_PASSWORD = "your_password" # Istege bagli
def start(update, context):
context.bot.send_message(chat_id=update.effective_chat.id, text="I'm a bot, please talk to me!")
def echo(update, context):
context.bot.send_message(chat_id=update.effective_chat.id, text=update.message.text)
def main():
# Proxy nesnesi olustur
request_kwargs = {
'proxy_url': PROXY_URL,
}
# Gerekiyorsa kimlik dogrulama ekle
if PROXY_USERNAME and PROXY_PASSWORD:
request_kwargs['urllib3_proxy_kwargs'] = {
'username': PROXY_USERNAME,
'password': PROXY_PASSWORD,
}
# Proxy ile bot ornegi olustur
bot = telegram.Bot(token=TOKEN, request_kwargs=request_kwargs)
# Updater olustur ve bot token'ini ilet
updater = Updater(bot=bot, use_context=True)
# Handler kaydi icin dispatcher'i al
dp = updater.dispatcher
# Komut handler'lari ekle
dp.add_handler(CommandHandler("start", start))
# Mesaj handler'i ekle
dp.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))
# Botu baslat
updater.start_polling()
# Ctrl-C basana veya surec SIGINT, SIGTERM ya da SIGABRT alana kadar
# botu calistir. Cogu durumda bu kullanilmalidir, cunku
# start_polling() bloklamaz ve botu duzgun sekilde durdurur.
updater.idle()
if __name__ == '__main__':
main()
SOCKS5 için temel farklar:
PROXY_URLbiçimi:socks5://veyasocks5h://şemasını kullanın.socks5h://, kütüphaneye hostname'i yerel yerine proxy sunucuda çözmesini söyler.
Proxy hatalarını yönetme
Proxy bağlantılarıyla ilgili olası hataları ele almak kritiktir. Sık görülen hatalar:
telegram.error.NetworkError: erişilemeyen proxy veya bağlantı zaman aşımı gibi ağ kaynaklı bir sorunu gösterir.telegram.error.Unauthorized: proxy ile kimlik doğrulamanın başarısız olduğunu bildirir.
Bu istisnaları yakalayıp düzgün şekilde ele almak için bot mantığınızı try...except blokları içine alın; örneğin hatayı loglayın veya farklı bir proxy ile yeniden bağlanmayı deneyin.
try:
updater.start_polling()
except telegram.error.NetworkError as e:
print(f"Network error: {e}")
# Yeniden deneme mantigi ekleyin veya baska bir proxy'ye gecin
except telegram.error.Unauthorized as e:
print(f"Authentication error: {e}")
# Proxy kimlik bilgilerini kontrol edin
Proxy yapılandırmanızı test etme
Proxy'yi kurduktan sonra doğru çalıştığını doğrulayın. Bunu şöyle yapabilirsiniz:
-
Botunuzun IP adresini kontrol ederek: botunuz üzerinden IP adresinizi gösteren bir servise istek gönderin (örneğin
https://httpbin.org/ipapi.ipify.org) ve gerçek IP adresinizle karşılaştırın. IP adresi proxy sunucusunun adresi olmalıdır. -
Ağ trafiğini izleyerek: botunuzdan çıkan trafiği gözlemlemek için ağ izleme araçlarını (örneğin Wireshark) kullanın. Trafik, yapılandırılan proxy üzerinden yönlendirilmelidir.
Proxy kullanımında en iyi uygulamalar
- İtibarlı proxy sağlayıcıları kullanın: iyi bir geçmişe ve şeffaf gizlilik politikalarına sahip sağlayıcıları seçin.
- Proxy kimlik bilgilerinizi koruyun: yetkisiz erişimi önlemek için proxy kullanıcı adı ve şifrenizi koruyun.
- Proxy performansını izleyin: en iyi performans için proxy'nin hızını ve güvenilirliğini düzenli olarak kontrol edin.
- Proxy'leri rotasyona sokun: tespit edilmemek ve rate limit'lerden kaçınmak için bir proxy havuzu kullanmayı ve bunları döndürmeyi düşünün.
- Telegram API kurallarına uyun: sunucuları aşırı yükleyebilecek istek yığınlarından kaçının. Rate limit'leri aşmak için proxy kullanmak, kötüye kullanım biçiminde yapılırsa Telegram ToS'una aykırıdır.
Sonuç
Python'da Telegram botunuz için proxy yapılandırmak, python-telegram-bot kütüphanesiyle basit bir işlemdir. Farklı proxy türlerini ve kimlik doğrulama yöntemlerini anlayarak botunuzun gizliliğini artırabilir, kısıtlamaları aşabilir ve performansı iyileştirebilirsiniz. Proxy kullanırken her zaman güvenliği önceliklendirin ve Telegram API kurallarına uyun. Hataları düzgün ele almayı ve yapılandırmanızı ayrıntılı test etmeyi unutmayın.
