前几天我在某论坛看到,他们的图片都是这样的.https://imgsa.baidu.com/forum/pic/item/d0fb39310a55b31937dfe4af4da98226cefc17fa.jpg,我寻思这.百度识图那个接口的图片也不是这样的啊.后来看了看,发现是贴吧的.于是就有了这个文章.
抓接口
F12
得到了 JSON 数据
有人问了?怎么这个接口的图片地址和发的不一样?别着急
看出来没有?这个和接受到的 JSON 数据中的pic_id_encode一毛一样吧?
PHP
$cookie = '你的百度 cookies'; //自己 F12 看吧
// 使用示例:
$url = uploadToBaidu($_FILES['file']['tmp_name'], $cookie);
echo $url;
/**
* JSON 数据美化
*/
function jsonm($data) {
header('content-type:application/json;charset=utf-8');
return stripslashes(json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
}
/**
* @FunctionName 百度图床
* @Author KIENG
* @CompletionDate 2019-08-12T09:06:17+0800
* @Copyright [blog.kieng.cn]
* @License [BY-NC-SA/4.0/CN]
* @param [type] $file [图片文件]
* @param [type] $cookie [百度 cookie]
* @return [type] [json]
*/
function uploadToBaidu($file, $cookie) {
// API 接口地址
$url = 'http://uploadphotos.baidu.com/upload/pic?tbs=dc00688a479d8002015649947380125500_1&fid=4208767&save_yun_album=1';
// 文件不存在
if (!file_exists($file)) {
return jsonm(['code' => 1, 'msg' => '文件不存在!']);
}
// POST 文件
if (class_exists('CURLFile')) {
// php 5.5
$post['file'] = new CURLFile(realpath($file));
} else {
$post['file'] = '@' . realpath($file);
}
// CURL 模拟提交
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$output = curl_exec($ch);
curl_close($ch);
// 解析数据
$output = json_decode($output, true);
if (empty($output['info']['pic_id_encode'])) {
return jsonm(['code' => 1, 'msg' => '上传失败!']);
} else {
$url = 'https://imgsa.baidu.com/forum/pic/item/' . $output['info']['pic_id_encode'] . '.jpg';
$f_url = 'https://image.baidu.com/search/down?tn=download&url=https://imgsa.baidu.com/forum/pic/item/' . $output['info']['pic_id_encode'] . '.jpg';
}
return jsonm(['code' => 0, 'msg' => '上传成功!', 'NoUrl' => $url, 'OkUrl' => $f_url]);
}
百度图床有防盗链那么怎么办呢?很简单只要在图片前面加上https://image.baidu.com/search/down?tn=download&url=上面中的接口已经帮助封装完毕,其中 NoUrl 就是有防盗链的,OkUrl 就是加了这个跳转的.有更好的方法欢迎评论!
效果
注意:本动态图片就是利用上面的接口获取的.如图片不显示证明本图床已失效
好了!OJBK 了!
~谢谢打赏~
赏