
OndexSystems
Üye
- Son görülme
- Katılım
- 15 Şub 2025
- Konular
- 12
- Mesajlar
- 29
- Beğeni
- 1,044
- Puanları
- 0
Kod:
<?php
header("Content-type: application/json");
$ondexApikeyCapmonster = 'CAPMONSTER_API_KEY'; // capmonster api anahtarınız buraya gelecek.
$url = 'https://reservation.tuvturk.com.tr/Web.UI/AppointmentInquiryByPlate.aspx';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$response = curl_exec($ch);
if ($response === false) {
die(json_encode(['error' => 'Sayfa getirilirken hata oluştu: ' . curl_error($ch)]));
}
curl_close($ch);
preg_match('/<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="([^"]+)" \/>/', $response, $matches);
$ondexViewstate = $matches[1] ?? '';
preg_match('/<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="([^"]+)" \/>/', $response, $matches);
$ondexViewstategenerator = $matches[1] ?? '';
preg_match('/<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="([^"]+)" \/>/', $response, $matches);
$ondexEventvalidation = $matches[1] ?? '';
if (empty($ondexViewstate) || empty($ondexViewstategenerator) || empty($ondexEventvalidation)) {
die(json_encode(['error' => 'Gerekli form değerleri alınamadı.']));
}
preg_match('@<img src="(CaptchaImage\.aspx\?guid=[^"]+)"@', $response, $matches);
if (!isset($matches[1])) {
die(json_encode(['error' => 'Captcha görseli bulunamadı.']));
}
$captchaUrl = 'https://reservation.tuvturk.com.tr/Web.UI/' . $matches[1];
$imagePath = 'captcha_' . rand(1000, 9999) . '.png';
file_put_contents($imagePath, file_get_contents($captchaUrl));
$capmonsterUrl = 'https://api.capmonster.cloud/createTask';
$taskData = [
'clientKey' => $ondexApikeyCapmonster,
'task' => [
'type' => 'ImageToTextTask',
'body' => base64_encode(file_get_contents($imagePath))
]
];
$ch = curl_init($capmonsterUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($taskData));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$capResponse = json_decode(curl_exec($ch), true);
curl_close($ch);
if (empty($capResponse['taskId'])) {
die(json_encode(['error' => 'CapMonster görev oluşturulamadı.']));
}
sleep(5);
$captchaResultUrl = 'https://api.capmonster.cloud/getTaskResult';
do {
sleep(3);
$ch = curl_init($captchaResultUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['clientKey' => $ondexApikeyCapmonster, 'taskId' => $capResponse['taskId']]));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$captchaResult = json_decode(curl_exec($ch), true);
curl_close($ch);
} while ($captchaResult['status'] !== 'ready');
$captchaText = strtoupper($captchaResult['solution']['text'] ?? '');
if (!$captchaText) {
die(json_encode(['error' => 'Captcha çözülemedi.']));
}
$postFields = [
'__EVENTTARGET' => 'Button1',
'__EVENTARGUMENT' => '',
'__VIEWSTATE' => $ondexViewstate,
'__VIEWSTATEGENERATOR' => $ondexViewstategenerator,
'__EVENTVALIDATION' => $ondexEventvalidation,
'LicensePlate' => htmlspecialchars($_GET['plaka'] ?? ''),
'PbNrNo' => '',
'imageControl' => $captchaText
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postFields));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/x-www-form-urlencoded',
'Referer: ' . $url,
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'
]);
$response = curl_exec($ch);
curl_close($ch);
preg_match('/<span id="StationName">([^<]+)<\/span>/', $response, $stationNameMatches);
preg_match('/<span id="ServiceType">([^<]+)<\/span>/', $response, $serviceTypeMatches);
preg_match('/<span id="EventDate">([^<]+)<\/span>/', $response, $eventDateMatches);
$info = [
'Plaka' => htmlspecialchars($_GET['plaka'] ?? ''),
'İstasyonAdı' => trim($stationNameMatches[1] ?? ''),
'HizmetTipi' => trim($serviceTypeMatches[1] ?? ''),
'MuayeneTarihi' => trim($eventDateMatches[1] ?? '')
];
echo json_encode([
'Author' => 'https://t.me/ondexsystems',
'success' => true,
'data' => $info
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
unlink($imagePath);
?>
NOT: Elimde plaka olmadığı için doğruluğunu tam teyit edemedim. Eğer yanlışsa siz düzeltirsiniz. Paylaşımı için @Azazelrat teşekkürlerimi sunarım.
NOT 2: Sadece Türkiye ağında çalışmaktadır. Proxy kullanmayı unutmayın.