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 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作