使用 cURL 检索最新版本的页面


Retrieving most recent version of page with cURL

我的网站从另一个网站拉入并发布时间表 - 使用 cURL 检索。 计划每天都在变化,但是,除非我删除服务器上的 cookie 文件,否则最新版本的时间表不会发布到我的网站,因此我假设 cookie 需要更新,但它没有发生。

额外信息:cookie文件具有权限644;我假设它可以在 cURL 创建文件时读取/写入(如果它不存在)。

感谢您的任何帮助!

法典:

<?php
$login_url = 'https://example.com';
//These are the post data username and password
$post_data = 'username=user&password=password&external_login=0&action=login';
//Create a curl object
$ch = curl_init();
//Set the useragent
$agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
//Set the URL
curl_setopt($ch, CURLOPT_URL, $login_url );
//This is a POST query
curl_setopt($ch, CURLOPT_POST, 1 );
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
//Set the post data
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
//We want the content after the query
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//Follow Location redirects
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
/*
Set the cookie storing files
Cookie files are necessary since we are logging and session data needs to be saved
*/
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
//Execute the action to login
$postResult = curl_exec($ch);
$geturl='https://example.com/schedule';
curl_setopt($ch, CURLOPT_URL, $geturl);
curl_exec($ch);
if(curl_exec($ch) === false)
{
echo 'Error: ' . curl_error($ch);
}
curl_setopt($ch, CURLOPT_URL, $geturl);
$schedule = curl_exec($ch);
echo $schedule;
curl_close($ch);
?>

以下是 cookie 文件的内容:

# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.
example.com FALSE   /   FALSE   0   code1234    codexxxxxxxxxx
example.com FALSE   /id/    FALSE   12345678    display_mobile_version_1620 0

已添加 curl_setopt($ch, CURLOPT_COOKIESESSION, 真);到以上,现在时间表正在拉出最新版本。

您可以尝试使用 CURLOPT_FRESH_CONNECT TRUE 强制使用新连接。

curl_setopt($curl1, CURLOPT_FRESH_CONNECT, TRUE);

不过,我很好奇您的文件中包含哪些 cookie。