Ich versuche, Informationen aus einem Webformular abzurufen. Die Website ist ein öffentliches Suchformular, wo Sie Autos in Dänemark nachsehen können und einige grundlegende Informationen über das Auto erhalten: Hier ist ein Link zur Website DMR, wo Sie versuchen können, das Nummernschild 'AZ87303' einzugeben. (Denken Sie daran, vor dem Absenden den Radiobutton Registrierungsnummer zu wählen).Quellcode aus der POST-Formular-Zielseite zurückgeben
Wenn Sie sich den Quellcode ansehen, gibt es ein verstecktes Feld namens 'dmrFormToken'
mit einem zufälligen Token. Ich habe dieses Token extrahiert und dieses in die POST-Anfrage aufgenommen. Hier ist mein aktueller Code, um eine POST-Anfrage in PHP mit diesem cUrl-Skript zu simulieren.
<?php
// Source: http://simplehtmldom.sourceforge.net/
include('inc/simple_html_dom.php');
/* Get Form Token */
$formUrl = "https://motorregister.skat.dk/dmr-front/appmanager/skat/dmr?_nfpb=true&_nfpb=true&_pageLabel=vis_koeretoej_side&_nfls=false";
$dmrFormToken = file_get_html($formUrl)->find('input[name=dmrFormToken]')[0]->value;
//extract data from the post
//set POST variables
$url = "https://motorregister.skat.dk/dmr-front/appmanager/skat/dmr?_nfpb=true&_windowLabel=kerne_vis_koeretoej&kerne_vis_koeretoej_actionOverride=%2Fdk%2Fskat%2Fdmr%2Ffront%2Fportlets%2Fkoeretoej%2Fnested%2FfremsoegKoeretoej%2Fsearch&_pageLabel=vis_koeretoej_side";
$fields = array(
urlencode('dmrFormToken') => urlencode($dmrFormToken),
urlencode('kerne_vis_koeretoejwlw-radio_button_group_key:{actionForm.soegekriterie}') => urlencode("REGISTRERINGSNUMMER"),
urlencode('kerne_vis_koeretoej{actionForm.soegeord}') => urlencode("AZ87303"),
urlencode('kerne_vis_koeretoejactionOverride:search') => urlencode("Søg")
);
$fields_string = "";
//url-ify the data for the POST
foreach($fields as $key=>$value) {
$fields_string .= $key.'='.$value.'&';
}
$fields_string = rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
//print response
echo $result;
?>
bekomme ich folgende Fehlermeldung:
This document you requested has moved temporarily.
It's now at https://motorregister.skat.dk/dmr-front/appmanager/skat/dmr?_nfls=false&_nfpb=true&_pageLabel=vis_koeretoej_side.
ich die Livehttpheaders Erweiterungen für FireFox heruntergeladen haben, die mir die Anfrage verfolgen können. Hier ist das Ergebnis
Hier wird die POST-Anfrage Inhalt von Livehttpheaders und aus dem cUrl Skript oben:
LiveHTTPHeaders:
dmrFormToken=5l1bq8pllh54kciahlu8lml3ou&kerne_vis_koeretoejwlw-radio_button_group_key%3A%7BactionForm.soegekriterie%7D=REGISTRERINGSNUMMER&kerne_vis_koeretoej%7BactionForm.soegeord%7D=AZ87303&kerne_vis_koeretoejactionOverride%3Asearch=S%C3%B8g
cUrl Script: // echo $fields_string;
dmrFormToken=s6qghv0013ch7u3pcsineao6lu&kerne_vis_koeretoejwlw-radio_button_group_key%3A%7BactionForm.soegekriterie%7D=REGISTRERINGSNUMMER&kerne_vis_koeretoej%7BactionForm.soegeord%7D=AZ87303&kerne_vis_koeretoejactionOverride%3Asearch=S%C3%B8g
Wie kann ich den Quellcode von der Ziel-URL mit meiner benutzerdefinierten POST erhalten Anfrage
Der unten angegebene Fragefaden löst das Problem nicht. Ich konnte eine POST-Anfrage an meine eigene Testseite stellen, aber sobald ich es auf der https://motorregister.skat.dk/ versuche, funktioniert es nicht.
Mögliche Duplikat [? Wie Seiteninhalt mit cURL bekommen] (http://stackoverflow.com/questions/14953867/how-to -get-page-content-using-curl) –
Ich kann es auf einer Testseite mit einem Formular mit POST tun, aber nicht auf der Website ich verlinkt in der Frage Beschreibung (DMR) – TobiasKnudsen