2017-03-20 9 views
0

Webフォームから情報を取得しようとしています。このウェブサイトは公式の検索フォームで、デンマークの車を検索して車に関する基本情報を得ることができます。DMRへのリンクです。'AZ87303'のナンバープレートを入力できます。 (提出する前に登録の欄のというラジオボタンを選択することを忘れないでください)。POSTフォームのランディングページからソースコードを返します

ソースコードを見ると、ランダムトークンを持つ'dmrFormToken'と呼ばれる隠しフィールドがあります。私はこのトークンを抽出し、これをPOST要求に含めます。ここでは、このcUrlスクリプトを使用してPHPでPOSTリクエストをシミュレートする私の現在のコードを示します。私は、FirefoxのためのLiveHttpHeaders拡張をダウンロードした

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. 

、私は要求に従うことができます。

<?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; 
?> 

は、私は次のエラーを取得します。私は私のカスタムPOSTでターゲットURLからソースコードを受け取ることができますどのように

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 

:ここで結果

ここ

enter image description here

はLiveHttpHeadersから、上カールスクリプトからのPOSTリクエストの内容がされていますリクエスト

下記の質問スレッドは問題を解決しません。自分のテストページにPOSTリクエストを行うことができましたが、一度試してみるとhttps://motorregister.skat.dk/は動作しません。

+0

可能な複製(http://stackoverflow.com/questions/14953867/how-to [カールを使用して、ページの内容を取得する方法?] -get-page-content-curlを使用して) –

+0

私はPOSTを使ってフォームを使ってテストページでそれを行うことができますが、質問の説明(DMR)にリンクされたウェブサイトではできません – TobiasKnudsen

答えて

0

は、あなたのカールのリクエストで、この行を含め、外出先を持っている:の

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

これはちょうどフォームの開始ページではなく、目的地ではなく車に関する情報 – TobiasKnudsen

関連する問題