file_get_contents - 空白响应(PHPSESSID)

时间:2014-08-18 02:50:31

标签: php cookies web-scraping

我试图用php代码下载一些网页。

$context_params = array('http' => array('method' => 'GET',
'user_agent' => 'Mozilla/5.0', 
'timeout' => 1, 
'header' => "Accept-language: en".
"Cookie:       site=blabla1234567cookie; 
               __cf=cookie12345678; 
          PHPSESSID=phpsessidcookie;"));

$context = stream_context_create($context_params);
$html = file_get_contents($url, FALSE, $context);

Web服务器通过验证cookie来检查用户。我已在上下文中插入了正确的客户端cookie,但是,一旦PHPSESSID到期(~1小时?),file_get_contents就会返回空白页面。我试图在网络浏览器上删除PHPSESSID cookie,一旦我加载网页,它就会生成新的PHPSESSID cookie。它并不需要任何重新登录。然后我尝试在脚本上删除PHPSESSID cookie,但现在file_get_contents返回空白页。

我试图检查this thread,但无论如何它都没有帮助。它仍然返回空白页,只要我在脚本中插入session_id()和session_name(),就无法使用print_r()/ var_dump / echo打印上下文数组。 (太大了?)
session_write_close()没有区别 如果我删除所有cookie然后加载页面没有任何问题,但我没有登录。
我尝试使用var_dump / echo读取空白页面的响应,并且在file_get_contents之后它们都在$ http_response_header上返回BLANK。

理论上,PHPSESSID可以由远程服务器生成,并根据他的cookie和IP地址发送给客户端(这解释了为什么它在我的机器上工作,但不能在我的VPS上工作)。 但是,PHPSESSID是否应该独立于您自己的IP地址在客户端计算机上生成?

问题:如何自动为PHP脚本的上下文生成/设置/更新新的正确PHPSESSID?

编辑:我想使用file_get_contents。 根本不关心cURL解决方案。

1 个答案:

答案 0 :(得分:0)

找到解决方案。

解决方案:在每个Cookie的末尾添加\ r \ n。否则会破坏结构,远程服务器可能会抱怨。