dongrong5189 2016-06-12 07:49
浏览 40
已采纳

如何在PHP中使用cURL验证请求

Here is the XHR cURL data:

curl "http://example.com/stream/contents?streamId=user"%"2FmyId"%"2Fcategory"%"2Fapple&count=40&ranked=newest" -H
     "Cookie: large-cookie-data" -H
     "$Authorization.example: $ExampleAuth" -H
     "Accept-Encoding: gzip, deflate, sdch" -H
     "Accept-Language: en-US,en;q=0.8" -H
     "Authorization: OAuth veryLargeRandomKey:example" -H
     "Content-Type: application/json" -H
     "Accept: */*" -H
     "Referer: http://example.com/somepage" -H
     "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36" -H
     "Connection: keep-alive" --compressed

I am using the following PHP code:

$c = curl_init('http://example.com/streams/contents?streamId=user"%"2F3ad1e06d-e1ac-49b4-ae99-21f96b2af86f"%"2Fcategory"%"2Fapple&count=40&ranked=newest');                 
curl_setopt($c, CURLOPT_USERAGENT, "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);         
curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);     
curl_setopt($c, CURLOPT_COOKIE, 'Big cookie string here');
curl_setopt($c, CURLOPT_REFERER, 'http://example.com/page/');
$z = curl_getinfo($c);
$s = curl_exec($c);
curl_close($c);  

The first error that I got was missing streamId key. Now, I guessed this is because of "%" in the URL so I replaced them with %. After that, I got the error unauthorized access: not logged in. So, I tried to add one more option to CURLOPT. The option I added was curl_setopt($c, CURLOPT_AUTHORIZATION, 'OAuth veryLargeRandomKey:example');. I had no reason to believe that it will work and it didn't. The error I got was

Use of undefined constant CURLOPT_AUTHORIZATION - assumed 'CURLOPT_AUTHORIZATION'

I have removed this extra option now. My question is how can I successfully authenticate my request. If you need any other information please let me know :)

  • 写回答

1条回答 默认 最新

  • duancuo1234 2016-06-12 17:53
    关注

    You need to know which of those headers are actually required for authentication. And then add them like this:

    curl_setopt($c, CURLOPT_HTTPHEADER, array(
        '$Authorization.example: $ExampleAuth',
        'Authorization: OAuth veryLargeRandomKey:example'
    ));
    

    CURLOPT_AUTHORIZATION constant doesn't exist, for the list of usable constants see curl_setopt.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀