【问题标题】:php curl post data to get value form referred urlphp curl发布数据以获取值形式引用的url
【发布时间】:2015-04-26 09:24:07
【问题描述】:

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

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

我想做的是从 abc.com 获取数据。有什么方法可以通过 curl 来实现吗?

我的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);

【问题讨论】:

    标签: php session curl cookies libcurl


    【解决方案1】:

    这里是一些小的补充的起点。

    我发现 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);
    

    查看我的一些其他答案linked here,其中显示了如何提取其他表单字段并执行多个请求。另见 (cURL -- cookies and sessions) 和 (PHP Curl - Cookies problem)

    希望对您有所帮助,如有问题/问题,请发表评论。

    【讨论】:

      猜你喜欢
      • 2011-10-18
      • 2015-10-03
      • 2016-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      相关资源
      最近更新 更多