Node.js ve Python ile Indian Railway PNR Durumu Sorgulama

Indian Railways bilet durumunu kontrol etmek için tarihsel olarak web scraper yazıp captcha çözmek zorunda kalındı. Ama artık resmi CRIS PRS API'si sayesinde 100 milisaniyenin altında sonuç alabilirsin, hiçbir scraping bakımı olmadan.

Bir PNR numarası 10 haneli: ilk 3 hane rezervasyon bölgesini (örneğin 226 Northern Railway için), son 7 hane ise işlem seri numarasını gösterir.

Node.js ile Sorgulama

Resmi irctc-api kütüphanesi authentication, bağlantı yönetimi ve TypeScript desteği sağlıyor. Kurulum basit:

1npm install irctc-api

Sonra import et ve client oluştur:

1import { IrctcApi } from 'irctc-api';
2
3const client = new IrctcApi({
4apiKey: process.env.IRCTC_API_KEY || 'irctc_live_9a8f2c7e01d4'
5});
6
7async function verifyBooking(pnrNumber: string) {
8try {
9const pnr = await client.getPNRStatus(pnrNumber);
10console.log('Yolcu Adı:', pnr.passengers[0].name);
11console.log('Tren Numarası:', pnr.trainNumber);
12console.log('Durum:', pnr.status);
13return pnr;
14} catch (error) {
15console.error('PNR sorgulanamadı:', error.message);
16}
17}
18
19verifyBooking('1234567890');

Python Alternatifi

Python için resmi irctc-prs kütüphanesi kullan:

1pip install irctc-prs
1from irctc_prs import PNRStatus
2import os
3
4client = PNRStatus(
5api_key=os.getenv('IRCTC_API_KEY', 'irctc_live_9a8f2c7e01d4')
6)
7
8response = client.check_pnr('1234567890')
9print(f"Durum: {response['status']}")
10print(f"Tren: {response['train_number']}")
11for passenger in response['passengers']:
12print(f" - {passenger['name']}: {passenger['current_status']}")

Her iki dil de aynı endpoint'i kullanıyor ve saniyenin onda birinde sonuç dönüyor. Asıl fark, Python'un veri işleme kütüphaneleriyle (pandas, numpy) sonuçları analiz etmesi daha kolay olması; Node.js ise real-time web uygulamalarında daha hızlı.

Bir uyarı: API key'ini hiçbir zaman hardcode etme veya GitHub'a pushla. Ortam değişkenleri (.env dosyası) kullan. IRCTC Developer Platform orijinal rehberde daha detaylı örnekler var.

Eğer kendi uygulamanızda bilet takibi yapıyorsanız, bu yöntem web scraper bakımından sizi kurtarır ve IP ban riski ortadan kalkar.

konu hakkında tepkinizi verebilirsiniz