Türsab PHP botu
Türsab tasarımını değiştirmiş, eskiden botum vardı ancak artık çalışmıyor. Yani halinden veri çekebileceğimiz bir kod parçası var mıdır elinizde?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (1)
Son tasarımından veri çekmek için bir class yazdım;
/**
* Class Tursab
* @author Tayfun Erbilen
*/
class Tursab
{
public $no;
public $output;
public $data;
public function __construct($no)
{
$this->no = $no;
$this->getSource();
}
public function getSource()
{
$this->curl('https://online.tursab.org.tr/publicpages/embedded/agencysearch/');
preg_match_all('@PublicKeyToken%3d(.*?)%@', $this->output, $publicKeyToken);
preg_match('@id="__VIEWSTATE" value="(.*?)"@', $this->output, $viewState);
preg_match('@id="__VIEWSTATEGENERATOR" value="(.*?)"@', $this->output, $viewStateGenerator);
preg_match('@id="__EVENTVALIDATION" value="(.*?)"@', $this->output, $eventValidation);
$postData = [];
$postData['ctl00$RadScriptManager'] = 'ctl00$ContentPlaceHolder1$UpdatePanel1|ctl00$ContentPlaceHolder1$SearchButton';
$postData['RadScriptManager_TSM'] = ';;System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=' . $publicKeyToken[1][0] . ':en-US:22727c22-244c-4537-8243-3c42cc5b20e2:ea597d4b:b25378d2;AjaxControlToolkit, Version=18.1.1.0, Culture=neutral, PublicKeyToken=' . $publicKeyToken[1][1] . ':en-US:b13aac2d-1c5e-49ed-8aa2-800cbed84558:cd9be5ef:f2800037:2761bb61:10439726:98f9cc63:dffb332:dda46be5:78181a00:f4e67d46;';
$postData['__EVENTTARGET'] = '';
$postData['__EVENTARGUMENT'] = '';
$postData['ctl00$ContentPlaceHolder1$TursabNo$AutoCompleteTextBox'] = '';
$postData['ctl00$ContentPlaceHolder1$TursabNo$AutoCompleteTextBoxHF'] = '';
$postData['ctl00$ContentPlaceHolder1$TursabNo$AutoCompleteTextBoxTF'] = '';
$postData['ctl00$ContentPlaceHolder1$TursabNoText'] = $this->no;
$postData['hiddenInputToUpdateATBuffer_CommonToolkitScripts'] = '1';
$postData['__VIEWSTATE'] = $viewState[1];
$postData['__VIEWSTATEGENERATOR'] = $viewStateGenerator[1];
$postData['__EVENTVALIDATION'] = $eventValidation[1];
$postData['__ASYNCPOST'] = true;
$postData['ctl00$ContentPlaceHolder1$SearchButton'] = 'ARA';
$this->curl('https://online.tursab.org.tr/publicpages/embedded/agencysearch/', $postData);
preg_match_all('@<div class="litc"><span style="color:red;">Acenta Adı : </span>(.*?)</div>@', $this->output, $agentName);
preg_match_all('@<div class="litc"><span style="color:red;">Telefon : </span>+(.*?)<br />@', $this->output, $agentPhone);
preg_match_all('@<div class="litc"><span style="color:red;">Email : </span>+(.*?)</div>@', $this->output, $agentMail);
preg_match_all('@<span class="red-label">Adres : </span>(.*?) <b>.*?</b> / <b>.*?</b>@', $this->output, $agentAddress);
if (isset($agentName[1]) && isset($agentPhone[1]) && isset($agentAddress[1])) {
$agents = [];
foreach ($agentName[1] as $key => $val) {
preg_match_all('@<b>(.*?)</b>@', $agentAddress[0][$key], $cityState);
$agents[] = [
'no' => $this->no,
'name' => $val,
'city' => $cityState[1][1],
'state' => $cityState[1][0],
'address' => $agentAddress[1][$key],
'phone' => $agentPhone[1][$key],
'mail' => $agentMail[1][$key]
];
}
$this->data = $agents;
}
}
public function curl($url, $post = false)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if ($post) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
}
$output = curl_exec($ch);
curl_close($ch);
$this->output = str_replace(["\n", "\r", "\t"], null, $output);
}
public function getData()
{
return $this->data;
}
}
$tursab = new Tursab(7089);
print_r($tursab->getData());