![](/img/trans.png)
[英]Post data and redirect to external web server with curl in php ( without javascript )
[英]How to obtain data from an external web page with curl through POST requests
以前,我已經編寫了一個代碼,可以查詢由GET發送給我的外部網頁,該網頁顯示了一個人的名字和姓氏。 該代碼運行良好,是這樣的:
function nome($id)
{
$url = 'https://www.dateas.com/es/consulta_cuit_cuil?name=&cuit='.$id;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER,array("Accept-Lenguage: es-es,es"));
curl_setopt($ch, CURLOPT_TIMEOUT,10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$html = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
preg_match_all('/<tr class="odd"><td><a href="(.*?)">/',$html ,$matches);
if (count($matches[1]) == 0)
{
$result = "Error in the server";
}
else if(count($matches[1]) == 1)
{
$result = $matches[1][0];
$result = str_replace('/es/persona/','', $result);
$result = substr($result, 0,-12);
$result = str_replace('-', ' ', $result);
$result = ucwords($result);
}
return $result;
}
$Name = nome($_GET['id']);
echo "<br><br>The name of the person is : ". $Name;
這段代碼很好用,但是現在我需要從另一個網站提取此信息,但是要做到這一點,我必須先登錄該網頁,然后轉到查詢部分並輸入ID,然后單擊搜索按鈕,然后單擊該頁面。返回此人的信息。 該網站不是通過GET而是通過POST來請求搜索和顯示人員信息。
我的問題是,我不知道如何在此新頁面中提取信息,因為我必須先登錄然后尋找輸入其ID的人,但請求是由POST處理的。
如何通過CURL或任何其他PHP方法獲取進行查詢的人員的信息?
這是用於登錄進行查詢的網站的登錄表單頁面: http : //buscardatos.com/Socios/ingresso.php
登錄后,我們應該轉到: http : //www.buscardatos.com/Personas/DNI
在其中輸入ID的文本字段中,通過單擊搜索按鈕,可以顯示此人的信息。
網站通過POST發出請求。 我試圖使用與此處顯示的代碼相同的代碼,但是它引發了“找不到頁面”錯誤。
您能否提供一些代碼或有關如何解決此問題的信息來幫助我?
也許您可以嘗試使用捕獲工具(例如Fiddler。實際上是瀏覽器本身可以看到此信息)來捕獲本地端口與服務器之間的交互。
首先,您需要使用瀏覽器來完成登錄和查詢過程,然后可以清楚地看到瀏覽器與服務器交互的http / https數據信息。
接下來,您需要使用PHP代碼來模擬瀏覽器以提交登錄信息(例如服務器),然后獲取服務器返回的數據(此數據可能是一個會話值,通常存儲在瀏覽器的cookie中。)
接下來,您可以使用上面的CURL來獲取數據。 請記住攜帶服務器驗證所需的數據。 如果它是一個cookie,也許您可以這樣添加它:
curl_setopt($ch,CURLOPT_COOKIE,'cookie= XXXX ; cookie_type= YYYY;');
只要提供正確的數據和URL,就可以獲取所需的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.