php curl post data to get value form referred url

烈酒焚心 提交于 2019-12-24 03:25:14

问题


I want to send post data to a page to get value. The problem is that I want to get data form abc.com. And abc.com opens only if user comes to abc.com from abc.com/previous url.

Maybe it is is doing some session or cookies to authenticate. I have no idea.

What I want to do is get data from abc.com. Is there any way via curl to do it?

My php code:

When you run the code it says url has be moved as for this url you need to come from old refer url then it works in browser

$SearchBy = "2";
$AttorneySearchMode="Name";
$LastName= "Smith";
$FirstName= "William";
$CaseStatusType= "0";
$SortBy= "fileddate";


echo $url = 'https://www.clarkcountycourts.us/Anonymous/Search.aspx?ID=400&NodeID=101%2c103%2c104%2c105%2c500%2c600%2c601%2c602%2c603%2c604%2c605%2c606%2c607%2c608%2c609%2c610%2c611%2c612%2c613%2c614%2c615%2c616%2c617%2c618%2c619%2c699%2c700%2c701%2c702%2c703%2c704%2c705%2c706%2c707%2c708%2c709%2c710%2c711%2c712%2c713%2c714%2c715%2c716%2c717%2c718%2c719%2c720%2c721%2c722%2c723%2c724%2c725%2c726%2c727%2c728%2c729%2c730%2c731%2c797%2c798&NodeDesc=All+Courts';

//set POST variables
$fields = array(
    'SearchBy' => urlencode($SearchBy),
    'AttorneySearchMode' => urlencode($AttorneySearchMode),
    'LastName' => urlencode($LastName),
    'FirstName' => urlencode($FirstName),
    'CaseStatusType' => urlencode($CaseStatusType),
    'SortBy' => urlencode($SortBy),
);
$fields_string = "";
foreach ($fields as $key=>$value) {
    $fields_string .= $key.'='.$value.'&';
}
rtrim($fields_string, '&');
$ch = curl_init();

curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

$result = curl_exec($ch);
curl_close($ch);
print_r($result);

回答1:


Here is a starting point with some minor additions.

I found 3 issues that prevented me from requesting the page on their server:

  1. Need to enable cookies in cURL and fetch one page before posting
  2. Needed to disable SSL checks (CURLOPT_SSL_VERIFYPEER, CURLOPT_SSL_VERIFYHOST)
  3. Some necessary form fields are missing from the request

In the example below I first fetch the main search page, and then re-use the same cURL handle to post the form. Note this is incomplete, you will need to write code to populate the remaining form fields.

// first fetch search page to set cookies
$url = 'https://www.clarkcountycourts.us/Anonymous/Search.aspx?ID=400&NodeID=101%2c103%2c104%2c105%2c500%2c600%2c601%2c602%2c603%2c604%2c605%2c606%2c607%2c608%2c609%2c610%2c611%2c612%2c613%2c614%2c615%2c616%2c617%2c618%2c619%2c699%2c700%2c701%2c702%2c703%2c704%2c705%2c706%2c707%2c708%2c709%2c710%2c711%2c712%2c713%2c714%2c715%2c716%2c717%2c718%2c719%2c720%2c721%2c722%2c723%2c724%2c725%2c726%2c727%2c728%2c729%2c730%2c731%2c797%2c798&NodeDesc=All+Courts';

$ch = curl_init();

// needed to disable SSL checks for this site
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);

// enable cookie handling (they aren't saved after cURL is closed)
curl_setopt($ch,CURLOPT_COOKIEFILE, '');

// debugging
curl_setopt($ch,CURLOPT_VERBOSE, 1);
curl_setopt($ch,CURLOPT_STDERR, fopen('php://output', 'w'));

// helpful options
curl_setopt($ch,CURLOPT_AUTOREFERER, true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);

// set first URL
curl_setopt($ch,CURLOPT_URL, $url);

// execute first request to establish cookies & referer    
$data = curl_exec($ch);

// TODO: extract hidden form fields/values from form 
$fields_string = '...';

// now make second request
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

$result = curl_exec($ch);
curl_close($ch);
var_dump($result);

See some of my other answers linked here which shows how to extract other form fields and do multiple requests. See also (cURL -- cookies and sessions) and (PHP Curl - Cookies problem)

Hope that helps, comment back with issues/questions.



来源:https://stackoverflow.com/questions/29875871/php-curl-post-data-to-get-value-form-referred-url

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!