利用C#快速查出哪些QQ好友空间屏蔽了自己
作者:一只想飞的小蚂蚁 发布时间:2023-10-07 22:14:28
标签:C#,QQ,屏蔽
大家好,我叫柠檬水,今天马上就要放假,突然想到自己以前的伙伴、同学,好像想到他们空间没怎么发过动态,难道是把我屏蔽了吗,好友又那么多,行吧,只能用c#写一个快速的知道哪些人屏蔽了自己。
首先我们整理逻辑,我们需要所有好友的QQ号,然后是一个通过qq号知道这个人是否空间屏蔽了自己的接口
qq号我倒是想到了腾讯官方提供的qq群里的某一个接口,后面的嘛,可以通过访问qq空间的那个接口嘛,嘿嘿,我真是太机智了 竟然我们逻辑都已经想好了,那么后面的事情就简单多了
首先我们进入qq群
进去后我们可以看到不仅是所有的QQ群有,连当前qq的所有好友也有 我们点击好友那个接口,打开所有的好友,直接复制就行了,其它的交给正则表达式吧!
然后我们登录QQ号,打开这个链接 http://user.qzone.qq.com/自己QQ号/infocenter 打开f12,刷新找到第一个接口,找到发送请求的cookie,现在c#获取cookie我还不会哦,写爬虫还是python好呢
现在我们有三个准备了,登录状态下的QQ号,cookie已经所以的qq好友 接下来看我的完整代码
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApp6
{
class Program
{
static void Main(string[] args)
{
string url = "http://user.qzone.qq.com/<<QQ>>/infocenter";
string txt = "";
StreamReader sr = new StreamReader(@"qq.txt");//里面装的是所以qq好友,直接将复制的写进去
while (!sr.EndOfStream)
{
string str = sr.ReadLine();
txt += str + "\n";
}
sr.Close();
string regex1 = "name: \"(?<name>.*?)\",";//获取QQ昵称
string regex2 = "uin: (?<qq>.*?)}";//获取QQ昵称
MatchCollection namelist = Regex.Matches(txt, regex1);
MatchCollection qqlist = Regex.Matches(txt, regex2);
if (namelist.Count != qqlist.Count)
{
Console.WriteLine("qq昵称与QQ号数目不匹配!");
return;
}
Dictionary<string, string> dic = new Dictionary<string, string>();
for (int i = 0; i < namelist.Count; i++)
{
string qqname = Regex.Match(namelist[i].Value, regex1).Groups["name"].ToString().Trim();
string qqnumber = Regex.Match(qqlist[i].Value, regex2).Groups["qq"].ToString().Trim();
dic.Add(qqname, qqnumber);
}
string cookie = "#";//将复制的cookie放在里面哦
foreach (var item in dic)
{
url = url.Replace("<<QQ>>", item.Value);
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "GET";
req.Accept = "text/html";
req.AllowAutoRedirect = true;
req.Headers.Add("Encoding", Encoding.UTF8.ToString());
req.Headers.Add("cookie", cookie);
req.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36";
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
using (StreamReader reader = new StreamReader(res.GetResponseStream()))
{
string html = reader.ReadToEnd();
if (!string.IsNullOrEmpty(html))
{
string filePath = System.IO.Directory.GetCurrentDirectory() + "\\" + item.Key + item.Value + ".txt";
using (StreamWriter sw = new StreamWriter(filePath))
{
sw.Write(html);
}
Console.WriteLine(item.Key + item.Value +"Download OK!\n");
}
}
url = url.Replace(item.Value,"<<QQ>>");
}
Console.WriteLine("成功啦,去程序目录一个个看吧!");
}
}
}
里面有说放qq号和cookie的注释,然后运行
如果里面有这句话的,唉
总体来说,其实可以直接得出结果的,但是,每一个好友难道不值得你一个一个看嘛,如果想用直接得出结果,可以联系我哦,其实后面加个判断就行了!
人生若只如初见,何事秋风悲画扇!
来源:https://blog.csdn.net/qq_44838095/article/details/122807945


猜你喜欢
- 我们深知在操作Java流对象后要将流关闭,但往往事情不尽人意,大致有以下几种不能一定将流关闭的写法:1.在try中关流,而没在finally
- C#单击菜单栏或工具栏时通过反射打开窗体的方法,可以以取代长长的if-else或switch-case语句。要点:将菜单或工具栏项的名称设置
- Android 四种获取屏幕宽度的方法方法一: WindowManager wm = (WindowManager) this
- 1.多节点无缝切换问题分布式节点中的服务宕机或者重启不影响客户端使用分布式节点中的服务宕机重启不影响业务服务内部通信如果在某个分布式系统中想
- 本文实例讲述了Android中SeekBar和RatingBar用法。分享给大家供大家参考,具体如下:什么是SeekBar?可以拖动的进度条
- 一、配置逆向generatoe.xml<?xml version="1.0" encoding="UTF
- 前言本文主要写的是:springboot下ueditor上传功能的实现及遇到的一些问题的处理整体项目结构展示Springboot整合uedi
- Grpc是googe开发的,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。新公司的项目服务之间的调用使用的Grpc来实现服务间
- 先上一张效果图using UnityEngine;using System.Collections;public class TestRot
- using System;using System.Collections.Generic;using System.Linq;using
- xml中: <ImageView &nb
- 0.解释器(Interpreter)模式定义 :给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。
- 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;
- 本文实例为大家分享了Android实现摄像头切换,拍照及保存到相册,预览等功能,解决android7拍照之后不能连续预览的问题、参数设置相关
- 读语句: String str = ConfigurationManager.AppSettings["DemoKey"
- 做Android开发的程序员必须知道android客户端应该如何与服务端进行交互,这里主要介绍的是使用json数据进行交互。服务端从数据库查
- java 枚举的功能挺多,但是坑更多,使用的时候要注意。如下面这个枚举。@Getter@AllArgsConstructorpublic e
- Docker现在很火,容器技术看上不无所不能,但这实际上是一种误解,不要被炒作出来的泡沫迷住双眼,本文抛去炒作,理性地从Java程序员的角度
- CXF简介CXF是一个开源的WebService框架。Apache CXF = Celtix + XFire,开始叫 Apache Celt
- 配置文件context-path的坑context-path: /manage 这个配置加入后会导致访问spring的页面都需要加这个/ma