当前位置: 首页 > 知识库问答 >
问题:

如何从远程URL获取cookie并将其发送回浏览器

尉迟轶
2023-03-14

我正在构建一个简单的PHP代理,缓存响应头和对象。

我的问题是,如果我登录到youtube.com,我就看不到自己的签名,youtube一直说登录(未签名),但是如果我停止我的脚本,打开youtube.com网站,我就会看到我自己签名了。我认为这是饼干的问题。是吗?

我的脚本只是抓取响应头并将其发送回浏览器。当我使用fopen()下载对象时,一些网站,如Google“Play STore”

我在响应头中看到过这样的头集Cookie,所以我想如果我使用header()将其发送回浏览器,那么它就会得到解决。。还是不走运。

这就是我如何获取从客户端请求的cookies$requested\u cookie=$\u cookie;

  $requested_cookie = $_COOKIE;
  $ua=  $_SERVER['HTTP_USER_AGENT'];
  ini_set('user_agent', $ua);
  $md5_fname = md5($fname);
  $filehead = $file_path."/HTTP_HEADER/".$md5_fname.".txt";
if (file_exists($filehead)) 
{

 $handle = fopen($filehead, "r");
 $contents = fread($handle, filesize($filehead));
 $getCachedH = unserialize($contents);
 fclose($handle);
 foreach ($getCachedH as $cHead)
 {
     $sendHead = $cHead;
     $getHead = strtoupper($cHead);
     //file_put_contents("$file_path/ghassan.txt", "\n $sendHead \n" ,FILE_APPEND);
     if ( preg_match('/CONTENT-LENGTH: (\d+)/i',$getHead,$clm) ) $content_length = $clm[1];
     if ( preg_match('/CONTENT-TYPE: ([\/\w\-\d]+)/i',$getHead,$ctm) ) $content_type = $ctm[1];
     if ( preg_match('/LOCATION: (.*)/i',$cHead,$lm) ) 
     {
         $header_location = $lm[1];
         header("Location: ".$header_location);
         exit;
     }
     if ( preg_match('/^HTTP\/1\.[01] (\d\d\d)/i', $getHead, $hcm ) ) 
     {
         $http_code = $hcm[1];

     }
     header($sendHead);
  }
 }
else
{
     $opts = array(
      'http'=>array(
       'ignore_errors'=>"true",
       'method'=>"GET",
       'header'=>"Cookie: foo=bar\r\n"
       )
      );

     $context = stream_context_create($opts);
     $urlptr = fopen($_GET['url'],'rb', false, $context);
     $headers = $http_response_header;
     $http_code = $headers[0];
     if($http_code=="200")
     {
         // We grab the Response Headers and save them 
         file_put_contents($filehead, serialize($headers));
     }

     foreach ($headers as $response_header)
     {
         $sendHead = $response_header;
         $getHead = strtoupper($response_header);
         header($sendHead);
         if ( preg_match('/CONTENT-LENGTH: (\d+)/i',$getHead,$clm) ) $content_length = $clm[1];
         if ( preg_match('/CONTENT-TYPE: ([\/\w\-\d]+)/i',$getHead,$ctm) ) $content_type = $ctm[1];
        if ( preg_match('@Set-Cookie: (([^=]+)=[^;]+)@i', $sendHead , $cookm))
         {
           $sCookies = $cookm[1];
           //file_put_contents("$file_path/cookies.txt", "\n $cookm[0], $url \n" ,FILE_APPEND);
         }
         if ( preg_match('/LOCATION: (.*)/i',$sendHead,$lm) ) 
         {
             $header_location = $lm[1];
             header("Location: ".$header_location);
             exit;
         }
         if ( preg_match('/ACCEPT-RANGES: ([\w\d\-]+)/i',$getHead,$arm) ) $accept_ranges = $arm[1];
         if ( preg_match('/^HTTP\/1\.[01] (\d\d\d)/i', $getHead, $hcm ) ) 
         {
             $http_code = $hcm[1];
         } 

      }
  }

>

当我通过我的php脚本从Play Store下载文件时,如果我已经发送了Android设备的用户代理,那么有没有通过我的php脚本访问客户端cookie的解决方案,以及如何解决403禁止消息?。

非常感谢。

共有1个答案

柳坚白
2023-03-14

我已经解决了我的问题。

当我抓取每个网站的远程标题时。。标头已经设置了Cookie标头,因此我将它们重新发送回浏览器,从$\u Cookie中捕获Cookie,并使用fopen()添加Cookie,这似乎解决了我上面的所有问题。

谢谢你

 类似资料:
  • 我正在尝试制作一个程序: 从文件中读取汉字列表,然后根据这些汉字制作字典(将符号与其含义关联起来) 一旦我能够正确地阅读和存储这些标志(我试着将它们写入另一个文件,以检查它们是否正确,并且是否有效),我就不知道如何将它们发送到我的浏览器。 我连接到127.0.0.1:4321,我所能做到的最好的是得到一个(据说)网址编码的汉字及其翻译。 代码: 如果我不urlencode的汉字,我得到一个错误从p

  • 我试图在一些servlet和jsp之间添加一个过滤器,以便在显示jsp之前登录的用户。问题是,我试图检索浏览器的网址,这是转发到登录页面,但我找不到如何。我尝试在过滤器中获取URI,并将其作为请求的属性发送给Connexion servlet,但是,它不起作用。

  • 我在写一个简单的信息管理程序的代码。我在Java swing GUI中遇到了麻烦。在这段代码中,我计划在Northpanel_center中使用JTextField字符串,以便在NorthPanel_East中使用。但我不能用它。 要补充的是,类似这样的搜索方法。

  • 我们的客户机将在servlet上使用json对象发送请求,基于这些数据我想更新我们的数据库。 org.codehaus.jackson.jsonParseException:意外字符(“O”(代码111)):在org.codehaus.jackson.jsonParser._constructor(jsonParserminimalbase._reportExpectedChar(jsonPars

  • 我正在尝试反应表,对反应一般是很新的。现在,在下面的代码中,一个本地JSON(mock_data.JSON)被传递到常量数据中。我想用从URL获取的数据替换本地JSON。我怎么能那样做?谢谢:)

  • 问题内容: 我正在使用HttpClient 4.1.2 那么,如何获取Cookie值? 问题答案: 请注意:第一个链接指向曾经在HttpClient V3中工作的内容。在下面找到与V4相关的信息。 这应该回答你的问题 http://www.java2s.com/Code/Java/Apache- Common/GetCookievalueandsetcookievalue.htm 以下与V4有关: