PHP、cURL和Roblox。cURL继续重定向到错误页面

PHP、cURL和Roblox。cURL继续重定向到错误页面,php,curl,cookies,roblox,Php,Curl,Cookies,Roblox,我正在制作一个用于Roblox的HTTP API。我正在使用PHP和cURL来实现这一点。 然而,有一种方法让我陷入困境。这是通过PHP中的roblox发送消息。我已使用Fiddler捕获了消息发送请求。我已将所有标题放入cURL请求中。 我还获取了.ROBLOSECURITY cookie、X-CSRF令牌以及RBXSessionTracker和_请求验证cookie 以下是您想要帮助的人的信息代码: $RecipientId=$_POST['RecipientId']; $Subject=$

我正在制作一个用于Roblox的HTTP API。我正在使用PHP和cURL来实现这一点。
然而,有一种方法让我陷入困境。这是通过PHP中的roblox发送消息。我已使用Fiddler捕获了消息发送请求。我已将所有标题放入cURL请求中。
我还获取了.ROBLOSECURITY cookie、X-CSRF令牌以及RBXSessionTracker和_请求验证cookie

以下是您想要帮助的人的信息代码:

$RecipientId=$_POST['RecipientId'];
$Subject=$_POST['Subject'];
    $Message=$_POST['Message'];
    $AuthCookie=decodeJSON($_POST['Login']);
    $AuthCookie=$AuthCookie[0];
    $TokenCurl=curl_init('roblox.com/build/upload?groupId=1');
    curl_setopt_array($TokenCurl,array(
        CURLOPT_HTTPGET => 1,
        CURLOPT_FRESH_CONNECT => 1,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_HEADER => 1,
        CURLOPT_HTTPHEADER => array('Cookie: .ROBLOSECURITY='.$AuthCookie),
    ));
    $TokenResponse=curl_exec($TokenCurl);
    $TokenHeaderSize=curl_getinfo($TokenCurl,CURLINFO_HEADER_SIZE);
    $TokenCurlError=curl_error($TokenCurl);
    $Cookies=GetCookies(substr($TokenResponse,0,$TokenHeaderSize));
    $SessionTracker=$Cookies['RBXSessionTracker'];
    $RequestVerification=$Cookies['__RequestVerificationToken'];
    $AuthCookie='.ROBLOSECURITY='.$AuthCookie.'; RBXSessionTracker='.$SessionTracker.'; __RequestVerificationToken='.$RequestVerification.';';
    curl_close($TokenCurl);
    if($TokenCurlError!==''){
        die($TokenCurlError);
    };
    $Cache=time();
    preg_match("\`<script\stype=\"text/javascript\">\s*?Roblox\.XsrfToken\.setToken\('(.*?)'\);\s*?</script>\`",$TokenResponse,$Matches);
    $Token=$Matches[1];
    if(empty($Token)){
        die("Could not get X-CSRF Token");
    };
    $PostData=json_encode(array(subject=>$Subject,body=>$Message,recipientid=>$RecipientId,cacheBuster=>$Cache));
    $Curl=curl_init('roblox.com/messages/send');
        curl_setopt_array($Curl,array(
            CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0',
            CURLOPT_POST => 1,
            CURLOPT_FRESH_CONNECT => 1,
            CURLOPT_HEADER => 1,
            CURLOPT_POSTFIELDS => $PostData,
            CURLOPT_HTTPHEADER => array('Content-Length: '.strlen($PostData),'X-CSRF-TOKEN: '.$Token,'Referer: www.roblox.com/messages/compose?recipientId='.$RecipientId,'X-Requested-With: XMLHttpRequest','Cookie: '.$AuthCookie,'Accept: application/json, text/javascript, */*; q=0.01','Accept-Language: en-US,en;q=0.5','Accept-Encoding: gzip, deflate','Connection: keep-alive','Pragma: no-cache','Cache-Control: no-cache'),
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_FOLLOWLOCATION => 1,
            CURLOPT_VERBOSE => 1
        ));
        $ResponseBody=curl_exec($Curl);
        echo $ResponseBody;
        $HTTPResponseCode=curl_getinfo($Curl,CURLINFO_HTTP_CODE);
        $HTTPHeaderSize=curl_getinfo($Curl,CURLINFO_HEADER_SIZE);
        $ResponseHeader=substr($ResponseBody,0,$HTTPHeaderSize);
        $CurlError=curl_error($Curl);
        curl_close($Curl);
        if($CurlError!==''){
            die($CurlError);
        };
        $MessageResult=decodeJSON(substr($ResponseBody,$HTTPHeaderSize));
        echo json_encode(array(Message=>$MessageResult['message']));
$RecipientId=$\u POST['RecipientId'];
$Subject=$_POST['Subject'];
$Message=$_POST['Message'];
$AuthCookie=decodeJSON($_POST['Login']);
$AuthCookie=$AuthCookie[0];
$TokenCurl=curl_init('roblox.com/build/upload?groupId=1');
curl_setopt_数组($TokenCurl,数组(
CURLOPT_HTTPGET=>1,
CURLOPT_FRESH_CONNECT=>1,
CURLOPT_RETURNTRANSFER=>1,
CURLOPT_头=>1,
CURLOPT_HTTPHEADER=>array('Cookie:.ROBLOSECURITY='。$AuthCookie),
));
$TokenResponse=curl\u exec($TokenCurl);
$TokenHeaderSize=curl\u getinfo($TokenCurl,CURLINFO\u HEADER\u SIZE);
$TokenCurlError=curl\u error($TokenCurl);
$Cookies=GetCookies(substr($TokenResponse,0,$TokenHeaderSize));
$SessionTracker=$Cookies['RBXSessionTracker'];
$RequestVerification=$Cookies[''u RequestVerificationToken'];
$AuthCookie='.ROBLOSECURITY='.$AuthCookie';RBXSessionTracker='.$SessionTracker'__RequestVerificationToken='.$RequestVerification';';
旋度关闭($旋度);
如果($TokenCurlError!=''){
死($错误);
};
$Cache=time();
preg\u match(“\`\s*?Roblox\.XsrfToken\.setToken\(“(.*?”);\s*?\”,$TokenResponse,$Matches);
$Token=$Matches[1];
if(空($Token)){
die(“无法获取X-CSRF令牌”);
};
$PostData=json_编码(数组(主题=>$subject,正文=>$Message,recipientid=>$recipientid,cacheBuster=>$Cache));
$Curl=Curl_init('roblox.com/messages/send');
curl_setopt_数组($curl,数组(
CURLOPT_USERAGENT=>“Mozilla/5.0(Windows NT 6.3;WOW64;rv:39.0)Gecko/20100101 Firefox/39.0”,
CURLOPT_POST=>1,
CURLOPT_FRESH_CONNECT=>1,
CURLOPT_头=>1,
CURLOPT_POSTFIELDS=>$PostData,
CURLOPT_HTTPHEADER=>array('Content-Length:').strlen($PostData),'X-CSRF-TOKEN:'.$TOKEN,'Referer:www.roblox.com/messages/compose?recipientId='.$recipientId,'X-request-With:XMLHttpRequest','Cookie:'.$AuthCookie,'Accept:application/json,text/javascript,*/*;q=0.01','Accept-Language:en-US,en;q=0.5','Accept-Encoding:gzip,deflate','Connection:keep-alive','Pragma:no-cache',',
CURLOPT_RETURNTRANSFER=>1,
CURLOPT_FOLLOWLOCATION=>1,
CURLOPT_VERBOSE=>1
));
$ResponseBody=curl\u exec($curl);
echo$ResponseBody;
$HTTPResponseCode=curl\u getinfo($curl,CURLINFO\u HTTP\u代码);
$HTTPHeaderSize=curl\u getinfo($curl,CURLINFO\u HEADER\u SIZE);
$ResponseHeader=substr($ResponseBody,0,$HTTPHeaderSize);
$CurlError=curl\u error($curl);
curl_close($curl);
如果($CurlError!=''){
模具(错误);
};
$MessageResult=decodeJSON(substr($ResponseBody,$HTTPHeaderSize));
echo json_编码(数组(Message=>$MessageResult['Message']);
由于声誉问题,我从链接中删除了“http://”

一切都正常,只是无法传递信息。有人知道你需要发送什么信息吗