
利用cookie写的,给新手用,大神别来喷。 a.php主文件,class.mail.sha.php是类文件,类文件里面填写cookie,主文件调用类文件 函数解析。get方式,http://127.0.0.1/a.php?sha=1e625667d41cc324b6afe9b0cc12788a29066672&size=2400328152,邮箱可能会有未知的限制
PHP class类代码
<?php
class sha
{
static function shajx($sha, $size)
{
return self::getFile($sha, $size);
}
public static function cookie()
{
$cookie = '这里填写邮箱cookie下面注释掉的代码是文件形式引用cookie';
return $cookie;
}
public static function getsid()
{
$url = 'https://mail.qq.com/cgi-bin/login?vt=passport&vm=wsk&delegate_url=';
$result = self::curl(self::cookie(), "", $url);
return self::getz($result, '?sid=', '"');
}
public static function getFile($sha, $size)
{
header('content-type:application/json;charset=utf8');
$url = 'https://mail.qq.com/cgi-bin/ftnCreatefile?uin=123456&ef=js&resp_charset=UTF8&s=ftnCreate&sid=' . self::getsid() . '&path=1.jpg&size=' . $size . '&sha=' . $sha . '&appid=2&loc=ftnCreatefile,ftnCreatefile,ftnCreate,ftn2';
$result = self::curl(self::cookie(), "", $url);
$error = self::getz($result, 'errcode : "', '",');
$error2 = self::getz($result, 'errcode: "', '"');
if ($error != 0 or $error2 == -2) {
return json_encode(array("status" => "-1", "data" => "error"), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
}
$url = 'https://mail.qq.com/cgi-bin/ftnExs_files?sid=' . self::getsid() . '&t=ftn.json&s=list&ef=js&listtype=self&up=down&sorttype=createtime&page=0&pagesize=1&pagemode=more&pagecount=1';
$result = self::curl(self::cookie(), "", $url);
$error = self::getz($result, 'errcode : ', ',');
if ($error != 0) {
return json_encode(array("status" => "-1", "data" => "error"), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
}
$head = str_ireplace('ftn_handler/', 'm.mp4?rkey=', str_ireplace('https', 'http', self::getz($result, 'sPreviewUrl : "', '/",')));
$fid = self::getz($result, 'sFileId : "', '",');
$url = 'https://mail.qq.com/cgi-bin/ftnDelFile?sid=' . self::getsid() . 'r&t=ftn.json&s=oper&ef=js&pathid=&keytext=&sid=' . self::getsid();
$data = '&fid=' . $fid;
self::curl(self::cookie(), $data, $url);
return json_encode(array("status" => "1", "data" => array("url" => $head, "cookie" => substr($sha, -8)), "mode" => "rkey"), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
}
public static function getz($str, $leftStr, $rightStr)
{
if (!empty($str)) {
$left = strpos($str, $leftStr);
if (empty($left)) {
return '';
}
$right = strpos($str, $rightStr, $left + strlen($leftStr));
if (empty($left) or empty($right)) {
return '';
}
return substr($str, $left + strlen($leftStr), $right - $left - strlen($leftStr));
}
}
public static function curl($cookie = "", $data = "", $url)
{
$ch = curl_init();
$res = curl_setopt($ch, CURLOPT_URL, $url);
$header1[] = "Content-Type:application/json;charset=UTF-8";
curl_setopt($ch, CURLOPT_HTTPHEADER, $header1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, 0);
if ($data != "") {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if ($cookie != "") {
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
}
$result = curl_exec($ch);
curl_close($ch);
if ($result == NULL) {
return 0;
}
return $result;
}
}
调用代码
<?php
include("class.mail.sha.php");
header('content-type:application/json;charset=utf8');
$sha = $_GET['sha'];
$size = $_GET['size'];
if (empty($sha) or empty($size)) {
return json_encode(array("status" => "-1", "data" => "error"), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
}
$sha1 = new sha();
echo $sha1->shajx($sha, $size);//sha值,size值(字节大小)
|