danimoe
07.07.2009, 10:55:12
Hallo Forenmitglieder,
Ich habe ein Problem: Und zwar will ich auf TUIfly.com (http://www.tuifly.com) das Formular ausfüllen für die Suche von Flügen und das Ergebnis dann verwerten.
Soweit so gut. Ich versuche in der POST-Anweisung den VIEWSTATE mit zu übergeben. Ich bekomm leider nur die Standardseite mit unausgefüllten Feldern und ohne Stylesheets und JS-Dateien (ist ja klar, glaub ich).
curl_login('http://www.tuifly.com/Select.aspx','__EVENTTARGET=ControlGroupAvailabilitySearchSelectView%2 4AvailabilitySearchInputSelectView%24LinkButtonNewSearch&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwUBMGRk8c6YBCrCSJBXIOvLBnRhqSOpiIE%3D&scorigin=CS-Home&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24RadioButtonMarketStructure=RoundTrip&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListMarketOrigin1=BRI&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListMarketDestination1=CGN&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListMarketDay1=09&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListMarketMonth1=2009-07&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListMarketDay2=28&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListMarketMonth2=2009-07&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListNewPassengerType_ADT=1&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListPassengerType_INFANT=0&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListPassengerType_CHDD=0&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListPassengerType_CHD=0&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListPassengerType_ADT=1&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListMarketDateRange1=2%7C2&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListMarketDateRange2=2%7C2&ControlGroupSelectView%24AvailabilityInputSelectView','','off');
function curl_login($url,$data,$proxy,$proxystatus){
$cookiefile = $_SERVER['REMOTE_ADDR'] . '.txt';
$fp = fopen($cookiefile, "w");
fclose($fp);
$login = curl_init();
curl_setopt($login, CURLOPT_COOKIEJAR, $cookiefile);
curl_setopt($login, CURLOPT_COOKIEFILE, $cookiefile);
curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);//"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($login, CURLOPT_TIMEOUT, 40);
curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE);
if ($proxystatus == 'on') {
curl_setopt($login, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($login, CURLOPT_HTTPPROXYTUNNEL, TRUE);
curl_setopt($login, CURLOPT_PROXY, $proxy);
}
curl_setopt($login, CURLOPT_URL, $url);
curl_setopt($login, CURLOPT_HEADER, FALSE);
curl_setopt($login, CURLOPT_HTTPHEADER, Array('Expect: '));
curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($login, CURLOPT_POST, TRUE);
curl_setopt($login, CURLOPT_POSTFIELDS, $data);
ob_start(); // prevent any output
$ret = curl_exec ($login); // execute the curl command
ob_end_clean(); // stop preventing output
curl_close ($login);
unset($login);
$fp = fopen($cookiefile, 'r');
while ($line = fgets($fp)) {
$line = preg_replace('/\s*#.*$/', '', $line);
if (trim($line) == '') continue;
//echo $line;
$fields = explode("\t", trim($line));
$host = explode('.', $fields[0]);
//array_shift($host);
$host = implode('.', $host);
//var_dump($fields);
//setcookie($fields[5], $fields[6], $fields[4], $fields[2], $host, $fields[3] == 'TRUE');
header('Set-Cookie: '.rawurlencode($fields[5]).'='.rawurlencode($fields[6]).'; Domain=www.tuifly.de; Path=/', false);
}
fclose($fp);
return $ret;
}
function curl_grab_page($site,$proxy,$proxystatus){
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
if ($proxystatus == 'on') {
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
}
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_URL, $site);
ob_start(); // prevent any output
$ret = curl_exec ($ch); // execute the curl command
ob_end_clean(); // stop preventing output
curl_close ($ch);
return $ret;
}
Ich habe ein Problem: Und zwar will ich auf TUIfly.com (http://www.tuifly.com) das Formular ausfüllen für die Suche von Flügen und das Ergebnis dann verwerten.
Soweit so gut. Ich versuche in der POST-Anweisung den VIEWSTATE mit zu übergeben. Ich bekomm leider nur die Standardseite mit unausgefüllten Feldern und ohne Stylesheets und JS-Dateien (ist ja klar, glaub ich).
curl_login('http://www.tuifly.com/Select.aspx','__EVENTTARGET=ControlGroupAvailabilitySearchSelectView%2 4AvailabilitySearchInputSelectView%24LinkButtonNewSearch&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwUBMGRk8c6YBCrCSJBXIOvLBnRhqSOpiIE%3D&scorigin=CS-Home&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24RadioButtonMarketStructure=RoundTrip&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListMarketOrigin1=BRI&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListMarketDestination1=CGN&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListMarketDay1=09&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListMarketMonth1=2009-07&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListMarketDay2=28&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListMarketMonth2=2009-07&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListNewPassengerType_ADT=1&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListPassengerType_INFANT=0&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListPassengerType_CHDD=0&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListPassengerType_CHD=0&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListPassengerType_ADT=1&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListMarketDateRange1=2%7C2&ControlGroupAvailabilitySearchSelectView%24AvailabilitySearchInputSele ctView%24DropDownListMarketDateRange2=2%7C2&ControlGroupSelectView%24AvailabilityInputSelectView','','off');
function curl_login($url,$data,$proxy,$proxystatus){
$cookiefile = $_SERVER['REMOTE_ADDR'] . '.txt';
$fp = fopen($cookiefile, "w");
fclose($fp);
$login = curl_init();
curl_setopt($login, CURLOPT_COOKIEJAR, $cookiefile);
curl_setopt($login, CURLOPT_COOKIEFILE, $cookiefile);
curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);//"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($login, CURLOPT_TIMEOUT, 40);
curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE);
if ($proxystatus == 'on') {
curl_setopt($login, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($login, CURLOPT_HTTPPROXYTUNNEL, TRUE);
curl_setopt($login, CURLOPT_PROXY, $proxy);
}
curl_setopt($login, CURLOPT_URL, $url);
curl_setopt($login, CURLOPT_HEADER, FALSE);
curl_setopt($login, CURLOPT_HTTPHEADER, Array('Expect: '));
curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($login, CURLOPT_POST, TRUE);
curl_setopt($login, CURLOPT_POSTFIELDS, $data);
ob_start(); // prevent any output
$ret = curl_exec ($login); // execute the curl command
ob_end_clean(); // stop preventing output
curl_close ($login);
unset($login);
$fp = fopen($cookiefile, 'r');
while ($line = fgets($fp)) {
$line = preg_replace('/\s*#.*$/', '', $line);
if (trim($line) == '') continue;
//echo $line;
$fields = explode("\t", trim($line));
$host = explode('.', $fields[0]);
//array_shift($host);
$host = implode('.', $host);
//var_dump($fields);
//setcookie($fields[5], $fields[6], $fields[4], $fields[2], $host, $fields[3] == 'TRUE');
header('Set-Cookie: '.rawurlencode($fields[5]).'='.rawurlencode($fields[6]).'; Domain=www.tuifly.de; Path=/', false);
}
fclose($fp);
return $ret;
}
function curl_grab_page($site,$proxy,$proxystatus){
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
if ($proxystatus == 'on') {
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
}
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_URL, $site);
ob_start(); // prevent any output
$ret = curl_exec ($ch); // execute the curl command
ob_end_clean(); // stop preventing output
curl_close ($ch);
return $ret;
}