PHP curl post data 以获取值表单引用的 URL



我想将帖子数据发送到页面以获取值。问题是我想获取数据形式 abc.com.只有当用户从abc.com/previous url访问abc.com时,abc.com才会打开。

也许它正在执行一些会话或cookie进行身份验证。我不知道。

我想做的是从 abc.com 获取数据。有什么办法通过卷曲来做到这一点吗?

我的 php 代码:

当您运行代码时,它说url has be moved对于此 url,您需要来自旧的引用 url,然后它可以在浏览器中工作

$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);

这是一个起点,有一些小的补充。

我发现了 3 个问题,这些问题阻止我在他们的服务器上请求该页面:

  1. 需要在 cURL 中启用 cookie 并在发布前获取一个页面
  2. 需要禁用 SSL 检查 ( CURLOPT_SSL_VERIFYPEERCURLOPT_SSL_VERIFYHOST
  3. 请求中缺少一些必要的表单字段

在下面的示例中,我首先获取主搜索页面,然后重复使用相同的 cURL 句柄来发布表单。 请注意,这是不完整的,您需要编写代码来填充其余的表单字段。

// 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);

请参阅此处链接的其他一些答案,其中显示了如何提取其他表单字段并执行多个请求。 另请参阅(cURL - cookie and sessions)和(PHP Curl - Cookie 问题)

希望有帮助,请评论问题/问题。

最新更新