在当前社交网络技术迅猛发展的背景下,QQ空间仍旧是众多用户展示生活点滴的关键场所。迅速获得点赞与评论往往能显著提升关注度,而运用爬虫技术自动执行点赞与评论操作,宛如开启了一扇通往未知领域的新门户。然而,这一过程中所遇到的技术挑战与不足之处,同样值得深入研究和讨论。
以cookie登录抓取页面
$qq = "这里写自己的qq";
$cookie = "这里复制cookie";
$ch = curl_init();
$url = "https://user.qzone.qq.com/".$qq;
//设置访问的URL
curl_setopt($ch, CURLOPT_URL, $url);
//设置http头
$http_header = array(
"User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:61.0) Gecko/20100101 Firefox/61.0",
"Accepted-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Cookie: $cookie" );
//设置HTTP报文头的用户信息
curl_setopt($ch, CURLOPT_HTTPHEADER, $http_header);
//不需要响应报文头
curl_setopt($ch, CURLOPT_HEADER, FALSE);
//跳过https验证
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
//返回响应信息而不是直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
if (!$output = curl_exec($ch)) {
echo "Curl Error:". curl_error($ch);
}
curl_close($ch);
借助cookie技术实现QQ空间页面的登录以抓取数据,是自动点赞与评论流程中的初始阶段。在电脑版QQ空间界面,通过按下F12键切换至开发者模式,我们能够观察到cookie并对其进行复制。尽管这一步骤可能显得较为复杂,但它却是不可或缺的。cookie如同解锁之门,使我们得以访问目标页面,即我们的个人QQ空间页面。然而,这仅仅是起点,面对这一小挑战,我们绝不能轻言放弃。我们如此努力获取到的页面输出究竟有何价值?它构成了后续操作的根本,若无法精确获取,后续的任何操作都将无法继续。
尽管采用cookie进行账户登录的操作是可行的,但此方法对部分用户而言显得过于直接且缺乏技巧,那些对技术有一定追求的用户更倾向于尝试使用账号密码登录,尽管这种尝试可能遭遇挫折。在尝试过程中,可能会感到些许失望,因为追求更高层次的技术路径却未能如愿,然而无需过分忧虑,可以先采用确保成功的方法继续尝试。
点赞请求url的研究
在探究点赞请求的URL构成时,我们往往发现其并非易事。随意选取一个点赞操作并浏览开发者界面,即可发现URL的构建过程颇为繁复。其中,前半部分相对易于理解,但后续的参数、g_tk以及qzonetoken等元素却让人难以捉摸。经过多次尝试与查阅资料,方才得知g_tk是通过cookie中的p_skey经过特定算法计算得出的。而qzonetoken的查找亦需一定的技巧,需在网页元素界面按下Ctrl+F键输入qzonetoken方可显现。这一过程犹如破解谜题,每解开一个谜题,便更接近我们的目标。
if ($output){
preg_match('/window\.g_qzonetoken = \(function\(\)\{ try\{return "(.*?)";\} catch\(e\)/',$output, $matches2);
$qzonetoken = $matches2[1];
}
显而易见,构建完整的自动点赞及评论系统并非易事。在掌握g_tk与qzonetoken获取途径之前,面临诸多困惑。这些未知难题如同道路上的障碍,然而一旦克服,便将带来极大的满足感。
url参数确认与数据包构建
preg_match('/p_skey=([^;^\']*)/', $http_header[3], $matches);
$p_skey = $matches[1];
在充分理解各项参数的基础上,需执行关键环节——构建数据包并传输至特定URL。此过程可通过在QQ平台上点赞并浏览开发者中心中的数据包结构来实现。在此过程中,我们再次识别出unikey和curkey,它们是识别说说内容的关键标识。此过程犹如拼图,我们持续寻找并拼接新的小块,以完成整个拼图的组装。
<?php
function getGtk($skey){
$hash = 5381;
for($i=0;$i
在获取到这些核心要素后,便能够将相关资料综合整理并发送请求。在此过程中,内心既充满期待又略带不安,一方面渴望成功激活点赞功能,另一方面又担忧可能出现的未知错误使得努力功亏一篑。
require('gtk.php');
preg_match('/p_skey=([^;^\']*)/', $http_header[3], $matches);
$p_skey = $matches[1];
$gtk = getGTK($p_skey);
实现自动点赞的最后环节
完成数据包构建环节后,随即启动点赞功能的HTTP请求发送流程,此环节为自动点赞程序成功运行的关键步骤。紧随其后,在程序末尾设定三分钟自动刷新机制。由此,仅需在自建服务器上激活该文件,即可实现对新动态的自动点赞。此刻,心中是否涌起一丝喜悦?历经诸多复杂步骤,自动点赞功能终于有望得以实现。然而,亦对潜在的错误隐患心生忧虑,因实际操作前,难以确保其绝对稳定无误。
自动评论功能的开启
自动执行点赞操作后,随即启动了自动评论功能的开发。其原理与自动点赞相似,均需从网页中提取关键参数信息,进而构造数据包并发送至指定URL。在先前获取qzonetoken和unikey的基础上,还需精确匹配评论所需的其他相关信息。此环节同样不容忽视,因为尽管评论与点赞功能相似,仍存在细微差别。若任何一个细节出现偏差,均可能造成自动评论功能无法成功实施。
执行此阶段操作时,或将唤起对先前实施自动点赞功能过程中所遭遇诸多挑战的回忆,期望凭借累积的经验,本次过程能够更为顺畅。
代码整合与总结
if ($output){
//这里匹配出qzonetoken
preg_match('/window\.g_qzonetoken = \(function\(\)\{ try\{return "(.*?)";\} catch\(e\)/',$output, $matches2);
$qzonetoken = $matches2[1];
//正则匹配出unikey和curkey,unikey是$key[1][n],,unikey就是与qq好友相关的说说信息
$regex1 = '/data-unikey="(http[^"]*)"[^d]*data-curkey="([^"]*)"[^d]*data-clicklog=("like")[^h]*href="javascript:;"/';
//得到的$key就是我们想要的
preg_match_all($regex1, $output, $key);
}
将自动点赞与自动评论的代码模块进行融合,此自动点赞及评论的小程序便大致成型。对于那些对此感兴趣的朋友,可以将其封装成类以增强理解。尽管整个过程较为复杂且不尽完美,甚至作者本人也坦言因懒惰而完成此篇博客,然而这仍是一种探索与成果的体现。在大家参与的过程中是否遭遇过相似的问题呢?若有,欢迎在评论区分享您的经历,同时亦期待大家为这篇文章点赞并予以传播。
//构建点赞所需的数据包
for($i = 0; $i < count($key); $i++){
//时间为时间戳格式
$time = time();
$fid = explode('/', $key[1][$i]);
//数据包
$data = array(
"qzreferrer" => "https://user.qzone.qq.com/".$qq,
"opuin" => $qq,
"unikey" => $key[1][$i],
"curkey" => $key[2][$i],
"from" => "1",
"appid" => "311",
"typeid" => "0",
"abstime" => $time,
"fid" => $fid[5],
"active" => "0",
"fupdate" => "1"
);
//使用curl发送数据包
$ch2 = curl_init();
//点赞请求的url
$url2 = "https://user.qzone.qq.com/proxy/domain/w.qzone.qq.com/cgi-bin/likes/internal_dolike_app?g_tk=".$gtk.'&qzonetoken=.'$qzonetoken;
curl_setopt($ch2, CURLOPT_URL, $url2);
//请求HTTP报文头
curl_setopt($ch2, CURLOPT_HTTPHEADER, $http_header);
//不需要响应报文头
curl_setopt($ch2, CURLOPT_HEADER, FALSE);
//跳过https验证
curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, FALSE);
//返回响应信息而不是直接输出
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, TRUE);
//设置post信息
curl_setopt($ch2, CURLOPT_POST, TRUE);
//改善数据格式
curl_setopt($ch2, CURLOPT_POSTFIELDS, http_build_query($data));
//开始执行
if($output2 = curl_exec($ch2)){
echo "点赞成功
";
}
else{
echo curl_error($ch2);
}
curl_close($ch2);
}
让足球滚一会提供足球、篮球、NBA赛事前瞻分析推荐,与各联赛时实新闻报道、球员转会消息、赛事录像回放等资讯,用心认真把每件事做到最好的网站。
体育即时比分网提供实时足球比分与篮球比分数据,包括即时比分、赛程、球队、竞猜等数据,让您无时无刻都能掌握时实足球比分与篮球比分动态消息。即时更新各项比赛数据与完赛结果。让足球滚一会带您体验精彩的竞猜足球比赛!
金魔网
外籍模特
:imtoken钱包为您提供最新的imtoken钱包信息,imtoken是全球最大的数字货币钱包,支持包括BTC, ETH, BSC, TRON, Aptos, Polygon, Solana, OKExChain, Polkadot, Kusama, EOS等在内的所有主流公链及Layer 2,已为全球近千万用户提供可信赖的数字货币资产管理服务,也是当前DeFi用户必备的工具钱包。
我们专注提供明星代言、商演、翻包视频、祝福视频录制等业务,十多年行业服务经验