删除qq空间的留言。操作多了容易
{
"code":-4012,
"subcode":512,
"message":"操作过于频繁咯!休息会再来操作吧!",
"notice":0,
"time":1611556467,
"tips":"9A7C-0",
"data":{}
}
我的是删了几百条就频繁了。
package com.demo.demo;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.apache.commons.lang.StringUtils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* @author: c
* @create: 2021/01/25
* @description:
**/
public class Test {
private static String cookie = "你的cookie";
public static void main(String[] args) {
int start = 214;
for (int i = start;i > 1 ; i--){
getList(i);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void getList(int start){
String url ="https://user.qzone.qq.com/proxy/domain/m.qzone.qq.com/cgi-bin/new/get_msgb";
Map<String,String > map = new HashMap<String, String>();
map.put("uin","");//qq号
map.put("hostUin","");//qq号
map.put("num","10");
map.put("start",start + "0" );
map.put("hostword","0");
map.put("essence","1");
map.put("r","0.3180397351938269");
map.put("iNotice","0");
map.put("inCharset","utf-8");
map.put("outCharset","utf-8");
map.put("format","jsonp");
map.put("ref","qzone");
map.put("g_tk","979031278");
map.put("g_tk","979031278");
String result = sendGet(url, map );
result = result.replace("_Callback(","").replace(");","");
JSONObject jsonObject = JSONObject.parseObject(result);
JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("commentList");
String idList = "";
String uinList = "";
for (int i = 0 ; i< jsonArray.size();i ++){
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
idList = idList + jsonObject1.getString("id") + ",";
uinList = uinList + jsonObject1.getString("uin") + ",";
}
Map<String,String > param = new HashMap<>();
param.put("hostUin","");//qq号
param.put("idList",idList.substring(0,idList.length()-1));
param.put("uinList",uinList.substring(0,uinList.length() -1 ));
param.put("format","ts");
param.put("iNotice","1");
param.put("inCharset","utf-8");
param.put("outCharset","utf-8");
param.put("ref","qzone");
param.put("json","1");
param.put("qzreferrer","https://user.qzone.qq.com/proxy/domain/qzs.qq.com/qzone/msgboard/msgbcanvas.html#page=" + (start+1) );
String urlpost = "https://h5.qzone.qq.com/proxy/domain/m.qzone.qq.com/cgi-bin/new/del_msgb?g_tk=979031278";
String s = postForm(urlpost, param);
System.out.println(param.toString());
System.out.println(idList.substring(0,idList.length()-1));
System.out.println(uinList.substring(0,uinList.length() -1 ));
System.out.println(s);
}
public static String sendGet(String url, Map<String,String > querys) {
String result = "";
BufferedReader in = null;
StringBuilder sbUrl = new StringBuilder();
try {
if (null != querys) {
StringBuilder sbQuery = new StringBuilder();
for (Map.Entry<String, String> query : querys.entrySet()) {
if (0 < sbQuery.length()) {
sbQuery.append("&");
}
if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {
sbQuery.append(query.getValue());
}
if (!StringUtils.isBlank(query.getKey())) {
sbQuery.append(query.getKey());
if (!StringUtils.isBlank(query.getValue())) {
sbQuery.append("=");
sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
}
}
}
if (0 < sbQuery.length()) {
sbUrl.append("?").append(sbQuery);
}
}
String urlNameString = url + sbUrl;
URL realUrl = new URL(urlNameString);
// 打开和URL之间的连接
URLConnection connection = realUrl.openConnection();
// 设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
connection.setRequestProperty("cookie", cookie);
// 建立实际的连接
connection.connect();
// 获取所有响应头字段
Map<String, List<String>> map = connection.getHeaderFields();
// 遍历所有的响应头字段
for (String key : map.keySet()) {
System.out.println(key + "--->" + map.get(key));
}
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送GET请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输入流
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
}
public static String postForm(String url, Map<String, String> params){
String result = "";
OkHttpClient client = new OkHttpClient.Builder().build();
FormBody.Builder formbuilder = new FormBody.Builder();
Iterator<String> it = params.keySet().iterator();
while (it.hasNext()) {
String key = it.next();
formbuilder.add(key, params.get(key));
}
FormBody body = formbuilder.build();
Request request = new Request.Builder().url(url).addHeader(
"cookie",cookie
).addHeader("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)")
.addHeader("connection","Keep-Alive")
.addHeader("accept","*/*")
.post(body).build();
Response response = null;
try {
response = client.newCall(request).execute();
System.out.println("返回状态码" + response.code() + ",message:" + response.message());
result = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
}
所需pom
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.50</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.0</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.3</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-lang/commons-lang -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>