在网上找了很久也没有找到一个有效的备份QQ空间照片工具,作为一个Phper,淦就完事了,所以顶着寒冷,搞了三个小时终于把QQ空间所有照片备份了。

采用QQ空间api,有效时间不确定,如果发现api生效,请自己抓取api。

手动验证了一下相册数与抓到的链接数,一个都不差,/宾果<?php

class QzoneImgDown

{

// 调用方法

// 请登录https://h5.qzone.qq.com/获取你的cookie以及g_tk和uin

// $g_tk    = '';

// $res_uin = ''; // 该uin为你的QQ号(常规情况下)

// $cookie  = '';

// $qzone   = new QzoneImgDown($g_tk, $uin, $cookie);

// echo $qzone->getList();

// Ps:该类库仅用于获取自己QQ空间照片链接,至于QQ好友相册没有适配

// 获取的下载链接请使用下载工具进行下载(php不方便下载)

public function __construct($g_tk, $res_uin, $cookie)

{

$this->g_tk    = $g_tk;

$this->res_uin = $res_uin;

// 相册列表接口

$this->listApi = 'https://mobile.qzone.qq.com/list?g_tk=' . $this->g_tk . '&format=json&list_type=album&action=0&res_uin=' . $this->res_uin . '&count=99';

// 相册图片列表接口

$this->imgApi = 'https://h5.qzone.qq.com/webapp/json/mqzone_photo/getPhotoList2?g_tk=' . $this->g_tk . '&uin=' . $this->res_uin . '&albumid=xxxxxxxxxxxxx&ps=0&pn=20&password=&password_cleartext=0&swidth=1080&sheight=1920';

$this->cookie = $cookie;

}

/**

* 获取图片列表

* @Author   Youngxj

* @DateTime 2019-12-01

* @param    [type]     $url 相册ajax数据

* @return   [type]          [description]

*/

private function getImg($url)

{

// echo $url;exit;

$json = $this->curl_request($url, '', '', $this->cookie);

$arr  = json_decode($json, 1);

if (isset($arr['data']['album']['name'])) {

$fileName = $arr['data']['album']['name'];

$myfile   = @fopen($fileName . '.txt', 'a+');

if(!$myfile){

exit('文件写入失败,请检查目录读写权限是否正常');

}

$photos = array_values($arr['data']['photos']);

// echo json_encode($arr['data']['photos']);exit;

foreach ($photos as $key => $value) {

foreach ($photos[$key] as $keys => $values) {

// var_dump($key);var_dump($keys);

// var_dump($photos[$key][$keys]['1']['url']);

echo $text = $photos[$key][$keys]['1']['url'] . "n";

fwrite($myfile, $text);

}

}

fclose($myfile);

}

}

/**

* 计算翻页

* @Author   Youngxj

* @DateTime 2019-12-01

* @param    [type]     $url [description]

* @return   [type]          [description]

*/

private function ret($url)

{

$json = $this->curl_request($url, '', '', $this->cookie);

$arr  = json_decode($json, 1);

// echo json_encode($arr);exit;

if (isset($arr['data']['album']['name'])) {

$total_count = $arr['data']['total_count'];

$page_count  = ceil($total_count / 20);

// var_dump($total_count);exit;

for ($i = 0; $i <= $page_count; $i++) {

// var_dump($i);

$url = $this->url_set_value($url, 'ps', $i * 20);

// var_dump($url);exit;

$this->getImg($url);

}

// var_dump($page_count);exit;

// exit;

} else {

exit('error');

}

}

/**

* 获取相册列表

* @Author   Youngxj

* @DateTime 2019-12-01

* @return   [type]     [description]

*/

public function getList()

{

$json = $this->curl_request($this->listApi, '', '', $this->cookie);

$arr  = json_decode($json, 1);

if (isset($arr['data']['vFeeds'])) {

$newArr = $arr['data']['vFeeds'];

foreach ($newArr as $key => $value) {

$albumid = $newArr[$key]['pic']['albumid'];

$url     = $this->url_set_value($this->imgApi, 'albumid', $albumid);

// echo $url."n";

echo $this->ret($url);

}

} else {

exit('error');

}

}

/**

* curl模拟提交

* @param  [type]  $url          访问的URL

* @param  string  $post         post数据(不填则为GET)

* @param  string  $referer      自定义来路

* @param  string  $cookie       提交的$cookies

* @param  integer $returnCookie 是否返回$cookies

* @param  string  $ua           自定义UA

* @return [type]                [description]

*/

private function curl_request($url, $post = '', $referer = '', $cookie = '', $returnCookie = 0, $ua = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0')

{

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_USERAGENT, $ua);

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($curl, CURLOPT_AUTOREFERER, 1);

curl_setopt($curl, CURLOPT_TIMEOUT, 60);

curl_setopt($curl, CURLOPT_REFERER, $referer);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$httpheader[] = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";

$httpheader[] = "Accept-Encoding:gzip, deflate";

$httpheader[] = "Accept-Language:zh-CN,zh;q=0.9";

$httpheader[] = "Connection:close";

curl_setopt($curl, CURLOPT_HTTPHEADER, $httpheader);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

if ($post) {

curl_setopt($curl, CURLOPT_POST, 1);

curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));

}

if ($cookie) {

curl_setopt($curl, CURLOPT_COOKIE, $cookie);

}

curl_setopt($curl, CURLOPT_HEADER, $returnCookie);

curl_setopt($curl, CURLOPT_TIMEOUT, 10);

curl_setopt($curl, CURLOPT_ENCODING, "gzip");

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$data = curl_exec($curl);

if (curl_errno($curl)) {

return curl_error($curl);

}

curl_close($curl);

if ($returnCookie) {

list($header, $body) = explode("rnrn", $data, 2);

preg_match_all("/Set-Cookie:([^;]*);/", $header, $matches);

$info['cookie']  = substr($matches[1][1], 1);

$info['content'] = $body;

return $info;

} else {

return $data;

}

}

/**

* 替换get参数

* @Author   Youngxj

* @DateTime 2019-12-01

* @param    [type]     $url   地址

* @param    [type]     $key   key

* @param    [type]     $value val

* @return   [type]            [description]

*/

private function url_set_value($url, $key, $value)

{

$a     = explode('?', $url);

$url_f = $a[0];

$query = $a[1];

parse_str($query, $arr);

$arr[$key] = $value;

return $url_f . '?' . http_build_query($arr);

}

}

如何获取Cookie及uin就不再赘述了 该类库仅用于获取自己QQ空间照片链接,至于QQ好友相册没有适配 获取的下载链接请使用下载工具进行下载(php不方便下载)

php 采集qq空间,php批量抓取QQ空间相册链接相关推荐

  1. qpython爬虫_python爬虫教程:批量抓取 QQ 群信息

    前言 本文讲解Python批量抓取 QQ 群信息,包括群名称.群号.群人数.群主.地域.分类.标签.群简介等内容,返回 XLS / CSV / JSON 结果文件. 基本环境配置 版本:Python2 ...

  2. php爬取qq好友,使用php批量抓取QQ空间相册链接

    前言 小杰之前发布的文章<为什么QQ空间与我们渐行渐远?> 里面就提到小杰会抽空备份QQ空间的照片,但是在网上找了很久也没有找到一个有效的工具 作为一个Phper,淦就完事了,所以顶着寒冷 ...

  3. python3批量抓取电影天堂下载链接

    1.思路分析 首先打开电影天堂的列表页 右键审查元素查看电影简介的链接 将此链接打开可以得到下载地址 可能是爬虫原因网站审查元素和用request得到的数据不一样,因此代码的正则表达式会改变 加上列表 ...

  4. 批量抓取图虫作者页作品图片的方法

    图虫相册中很多图片都精美绝伦,让人抑制不住想要"据为己有".今天小编给大家分享一款采集工具--下图高手,下面就一采集图虫作者页图片为例,一起来操作. 作品分类效果: 图片展示效果: ...

  5. php 采集qq空间,php使用curl抓取qq空间的访客信息示例_php技巧

    这篇文章主要介绍了php使用curl抓取qq空间的访客信息示例,需要的朋友可以参考下 config.php<?php define('APP_DIR', dirname(__FILE__)); ...

  6. Python爬虫编程思想(103):项目实战--抓取QQ空间说说的内容

    本例使用Selenium完成一个综合项目,该项目可以QQ空间说说的内容.首先需要分析一下QQ空间说说的HTML代码. 由于进入QQ空间需要登录,所以抓取QQ空间说说的内容需要如下2步: 模拟登录 抓取 ...

  7. php curl 批量,关于用php的curl批量抓取内容

    先上个单个采集的curl访问案例<?php $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'www.baidu.com'); curl ...

  8. 京东上货助手批量抓取淘宝商品步骤

    京东上传商品的不是很复杂,不过如果想要批量抓取其他平台商品到京东,京东商家就需要时间和精力来批量抓取商品上传了.一般在京东开店的商家,在淘宝.阿里等平台都会有店铺的,这个是电商商家的常态,很多商家都会 ...

  9. 京东上货助手怎么批量抓取淘宝商品?

    京东开店的商家,是如何把其他平台的商品一键复制到京东的呢?京东是个什么样的平台呢?相信很多商家都知道吧,京东有自己的物流,是中国的综合网络零售商,是中国电子商务领域受消费者欢迎和具有影响力的电子商务网 ...

  10. python批量读取图片并批量保存_Python爬虫:批量抓取花瓣网高清美图并保存

    原标题:Python爬虫:批量抓取花瓣网高清美图并保存 昨天看到了不错的图片分享网--花瓣,里面的图片质量还不错,所以利用selenium+xpath我把它的妹子的栏目下爬取了下来,以图片栏目名称给文 ...

最新文章

  1. qrcode生产带logo_“白板”口罩打上LOGO装名牌 警方重拳出击清市场
  2. java_jdbc_spring框架查询操作简例
  3. bzoj 3120 矩阵优化DP
  4. 数据中心调试的重新思考
  5. 视图计算背后的技术架构思考
  6. 2014年9月28日 18:35:01
  7. 分页和条件查询接口开发
  8. 洛谷P2884 [USACO07MAR]Monthly Expense S
  9. Python之路(第二篇):Python基本数据类型字符串(一)
  10. mysql date max_mysql – 每个ID的SELECT MAX DATE
  11. php 基类 是什么,PHP Model基类
  12. 用户体验测试(UX测试)
  13. 串口通讯 电脑和dsp_高速DSP与PC实现串口通信的方法
  14. php怎么更换图片背景颜色,照片换底色红色变白色怎么变 怎么换照片底色
  15. 医院时钟系统(卫星校时钟)设计与答疑
  16. 汤姆猫代码python_用树莓派实现会说话的汤姆猫
  17. python pip安装pymssql_pip安装pymssql模块时报错“PEP 517”怎样处理
  18. Java开发面试(持续更新)
  19. 华为OD机试真题 Python 实现【数字涂色】
  20. kubernetes dev client-go 进入pod执行命令

热门文章

  1. 【北亚数据恢复】MSSQL 2000 出现“823”报错信息的数据恢复案例
  2. 解决File “D:\ProgramData\Anaconda3\lib\site-packages\keras\engine\saving.py“,相关问题
  3. 活动回顾 | 大咖云集“开源安全治理模型和工具”线上研讨会
  4. 第七十一章 SQL函数 LAST_DAY
  5. 世界上所有值得收藏的书单(持续更新)
  6. 乐森 扫地机器人_扫地机器人到底好用不好用?
  7. 科技护肤品,买还是不买
  8. 【Transformers】第 8 章 :使Transformers高效生产
  9. pro android python with sl4a,Pro Android Python with SL4A
  10. 怎么用python将日期转化为数字_python转化excel数字日期为标准日期操作