[ Hidden Content! ]
Code:
from math import fabs
from weakref import proxy
import requests
import json
import sys
import random
import string
import re
import urllib
# captcha api config on https://www.clearcaptcha.com
akamai_api="http://api.clearcaptcha.com/captcha/akamai_v2";
tls_api="http://api.clearcaptcha.com/captcha/tls";
token = 'test' # need replace your clearcaptcha token
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"
proxy="ip:port:user:pass" # need replace your proxy
def tls_result(url,method,headers,body,user_agent,proxy, cookie="", redirect=True):
data = {
'token': token,
'method': method,
'url': url,
'headers': json.dumps(headers),
'body': body,
'user_agent': user_agent,
'proxy': proxy,
'cookie': cookie,
'allow_redirect': str(redirect).lower()
}
try:
response = requests.post(tls_api, data=data, allow_redirects=redirect)
return response.json()
except requests.RequestException as e:
print(str(e))
sys.exit()
def akamai_result(abck, bm_sz, website, ua_ver="134.0.0.0"):
data = {
'token': token,
'abck': abck,
'bm_sz': bm_sz,
'website': website,
'ua_ver': ua_ver
}
try:
response = requests.post(akamai_api, data=data)
return response.json()
except requests.RequestException as e:
print(str(e))
sys.exit()
def update_cookie(old_cookie: str, new_cookie: dict) -> str:
old_cookie_dict = dict(item.split("=", 1) for item in old_cookie.split("; ") if "=" in item)
new_cookie_list = new_cookie
new_cookie_dict = dict(item.split("=", 1) for item in new_cookie_list if "=" in item)
old_cookie_dict.update(new_cookie_dict)
return "; ".join(f"{k}={v}" for k, v in old_cookie_dict.items())
session = requests.Session()
headers={
'Connection': 'keep-alive',
'User-Agent': user_agent,
'Accept': '*/*',
'Accept-Language': 'en-US,en;q=0.5',
'Accept-Encoding': 'gzip, deflate, br',
'Referer': 'https://www.irctc.co.in/nget/',
'Origin': 'https://www.irctc.co.in',
'sec-ch-ua': '"Google Chrome";v="134", "Not=A?Brand";v="8", "Chromium";v="134"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-User': '?1',
'Upgrade-Insecure-Requests': '1',
}
response_data = tls_result("https://www.irctc.co.in/nget/train-search", "GET", headers, "", user_agent, proxy, "");
response_html = response_data["data"]["result"]
cookies = response_data["data"]["cookie"]
cookie_str = ''.join(cookies)
abck_match = re.search(r"_abck=(.*?);", cookie_str)
bm_sz_match = re.search(r"bm_sz=(.*?);", cookie_str)
abck = abck_match.group(1) if abck_match else None
bm_sz = bm_sz_match.group(1) if bm_sz_match else None
response_data = akamai_result(abck, bm_sz, "https://www.irctc.co.in", "134.0.0.0");
sensor_data = response_data["data"]["sensor_data"];
ua = response_data["data"]["ua"];
headers["User-Agent"]=ua
headers["Content-Type"]="text/plain;charset=UTF-8"
post_data={
"sensor_data": sensor_data,
}
post_data=json.dumps(post_data)
response_data = tls_result("https://www.irctc.co.in/jHziu/zNXM/gBOq/RS/ur8Q8/X5Q9bp5Df5QXzE3h/dBkwGSAzdA/B2/ENDh5zYUYB", "POST", headers, post_data, user_agent, proxy, cookie_str);
response_html = response_data["data"]["result"]
cookies = response_data["data"]["cookie"]
if '{"success": true}' not in response_html:
print('akamai verification failed!')
sys.exit()
print('akamai verification successfully!')
cookie_str = update_cookie(cookie_str,cookies)
headers["Content-Type"]="application/json; charset=UTF-8"
headers["bmirak"]="webbm"
headers["Content-Language"]="en"
headers["greq"]="1742556231707"
post_data='{"concessionBooking":false,"srcStn":"MAS","destStn":"HWH","jrnyClass":"","jrnyDate":"20250401","quotaCode":"GN","currentBooking":"false","flexiFlag":false,"handicapFlag":false,"ticketType":"E","loyaltyRedemptionBooking":false,"ftBooking":false}'
response_data = tls_result("https://www.irctc.co.in/eticketing/protected/mapps1/altAvlEnq/TC", "POST", headers, post_data, user_agent, proxy, cookie_str);
response_html = response_data["data"]["result"]
if '"trainNumber":' in response_html:
print(response_html)
else:
print(f'Failed to get data! {response_html}')