Php文件\u获取\u内容未捕获特定组cookie
我创建了一个脚本,可以自动下载由应用程序创建的文件,该应用程序在生成文件时向用户发送电子邮件通知。此脚本登录,然后第二次执行,并在主机站点上设置了一些会话项,可以下载文件 最近,宿主站点创建了一个更新,并进行了一些额外的验证,因为我的脚本一直无法工作。我已经实现了与更新的验证过程相关的一切,以确保XSS攻击基本上得到缓解,但我遇到了一个障碍,现在一组GUID值不再位于“set Cookie:”中 我首先进入登录页面,获取该尝试的唯一值Php文件\u获取\u内容未捕获特定组cookie,php,cookies,login,screen-scraping,file-get-contents,Php,Cookies,Login,Screen Scraping,File Get Contents,我创建了一个脚本,可以自动下载由应用程序创建的文件,该应用程序在生成文件时向用户发送电子邮件通知。此脚本登录,然后第二次执行,并在主机站点上设置了一些会话项,可以下载文件 最近,宿主站点创建了一个更新,并进行了一些额外的验证,因为我的脚本一直无法工作。我已经实现了与更新的验证过程相关的一切,以确保XSS攻击基本上得到缓解,但我遇到了一个障碍,现在一组GUID值不再位于“set Cookie:”中 我首先进入登录页面,获取该尝试的唯一值 $url = "https://loginurl.com/"
$url = "https://loginurl.com/";
$options = array(
'https' => array(
'header' => "",
'method' => 'GET',
'content' => "",
),
);
$post_context = stream_context_create($options);
$post_raw_result = file_get_contents($url, false, $post_context);
$unique_headers = $http_response_header;
我分配http_response_头,然后选择一些我需要的值,但它不包含我在浏览器中看到的所有cookie
在过去的几周里,我一直在使用curl,从shell_exec()执行curl,而file_get似乎是我最好的选择,但我不知道为什么我不能再看到这些GUID项了。。在检查通信时,我可以在chrome或Mozilla中看到它们。我想可能是有多个cookie的东西,并尝试了以下几项:
$cookies_array = array();
foreach($http_response_header as $s)
{
if (preg_match('|^Set-Cookie:\s*([^=]+)=([^;]+);(.+)$|', $s, $parts))
{
$cookies_array[] = $parts[1] . '=' . $parts[2];
}
}
在其他一些类似问题的线程中找到和,但这似乎没有捕获任何其他信息
我很幸运地通过检查$\u COOKIE找到了更多的数据,但仍然没有包含我需要的2个GUID值
我甚至搬到了邮递员那里,可以看到在那里定义的cookies,我似乎无法用php捕获。你知道为什么它们不会出现在http\u头\u响应中,或者在哪里可以找到它们吗 可能是第一条评论:
请注意,HTTP包装器的头行硬限制为1024个字符。
接收到的任何长于此长度的HTTP头都将被忽略,并且不会出现在$HTTP\u response\u头中
如果不是,我建议使用CURL
$curl = curl_init();
curl_setopt($curl, CURLOPT_HEADER, 1); // This is what you looking for
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
// Your other options - see http://php.net/manual/en/function.curl-setopt.php
$response = curl_exec($curl);
// Check for $response success
$header = substr($response, 0, curl_getinfo($curl, CURLINFO_HEADER_SIZE)); // There you will get headers
或者你可以从头痛中得到一些东西,比如痛风,它可以为你处理饼干。要解决这个问题,需要结合几个项目。 1.移动到卷曲 2.删除内容长度(这导致每次设置时重定向到超时) 3.发出第二个请求并存储cookie,并呈现所有存储的cookie 必须使用以下所有选项
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "",
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_COOKIEJAR => 'cookie.txt',
CURLOPT_COOKIEFILE => 'cookie.txt',
CURLOPT_SSL_VERIFYPEER => false,
感谢您的回复,再次制作卷发版本,看看我是否能让它工作,并检查痛风