2017-03-20 5 views
0

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

enter image description here

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.

+0

Mögliche Duplikat [? Wie Seiteninhalt mit cURL bekommen] (http://stackoverflow.com/questions/14953867/how-to -get-page-content-using-curl) –

+0

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

Antwort

0

Haben Sie gehen mit dieser Zeile in der Curl-Anfrage:

curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true); 
+0

Dies führt nur zurück zu den Startseite mit dem Formular darauf, und nicht das Ziel mit den Informationen über das Auto – TobiasKnudsen

Verwandte Themen