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
:ここで結果
ここはLiveHttpHeadersから、上カールスクリプトからのPOSTリクエストの内容がされていますリクエスト
下記の質問スレッドは問題を解決しません。自分のテストページにPOSTリクエストを行うことができましたが、一度試してみるとhttps://motorregister.skat.dk/は動作しません。
可能な複製(http://stackoverflow.com/questions/14953867/how-to [カールを使用して、ページの内容を取得する方法?] -get-page-content-curlを使用して) –
私はPOSTを使ってフォームを使ってテストページでそれを行うことができますが、質問の説明(DMR)にリンクされたウェブサイトではできません – TobiasKnudsen