使用java代码批量删除新浪微博
首先开骂,新浪微博@#@!,不经我同意就转发各种微博,制造垃圾,还不提供微博批量删除功能,摆明了的流氓行为,可耻可恨,遭人唾弃!
SSLClient.java
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient; import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate; public class SSLClient extends DefaultHttpClient { public SSLClient() throws Exception {
super();
SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager tm = new X509TrustManager() { @Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { } @Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { } @Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
ctx.init(null, new TrustManager[]{tm}, null);
SSLSocketFactory ssf = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
ClientConnectionManager ccm = this.getConnectionManager();
SchemeRegistry sr = ccm.getSchemeRegistry();
sr.register(new Scheme("https", 443, ssf));
}
}
WeiboTest.java
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map; public class WeiboTest { public static final String url = "https://weibo.com/aj/mblog/del?ajwvr=6";
public static final String charset = "utf-8"; public static void main(String[] args) throws Exception {
/**
* sina_weibo.txt由微博页面F12获得格式是
* <div node-type="feed_list">
* <div action-type="feed_list_item"></div>
* <div action-type="feed_list_item"></div>
* <div action-type="feed_list_item"></div>
* <div action-type="feed_list_item"></div>
* <div action-type="feed_list_item"></div>
* ...
* </div>
*/
File file = new File("C:\\Users\\Nihaorz\\Desktop\\sina_weibo.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
StringBuffer sb = new StringBuffer();
String str;
while ((str = br.readLine()) != null) {
sb.append(str).append("\n");
}
System.out.println(sb);
br.close(); Document doc = Jsoup.parseBodyFragment(sb.toString());
Element body = doc.body();
Elements elements = body.select("div[action-type='feed_list_item']");
Iterator<Element> it = elements.iterator();
HttpPost httpPost = new HttpPost(url);
addHeader(httpPost);
while (it.hasNext()) {
Element element = it.next();
String mid = element.attr("mid");
System.out.println(mid);
execute(httpPost, mid);
}
} private static void execute(HttpPost httpPost, String mid) throws Exception {
HttpClient httpClient = new SSLClient();
//设置参数
List<NameValuePair> list = new ArrayList<NameValuePair>();
Map<String, String> map = new HashMap<String, String>();
map.put("mid", mid);
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, String> elem = iterator.next();
list.add(new BasicNameValuePair(elem.getKey(), elem.getValue()));
}
if (list.size() > 0) {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, charset);
httpPost.setEntity(entity);
}
HttpResponse resp = httpClient.execute(httpPost);
System.out.println(resp);
} private static void addHeader(HttpPost httpPost) {
httpPost.addHeader("Accept", "*/*");
httpPost.addHeader("Accept-Encoding", "gzip, deflate, br");
httpPost.addHeader("Accept-Language", "zh-CN,zh;q=0.9");
httpPost.addHeader("Connection", "keep-alive");
httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded");
/**
* 设置自己的cookie
*/
httpPost.addHeader("Cookie", "***");
httpPost.addHeader("Host", "weibo.com");
httpPost.addHeader("Origin", "https://weibo.com");
httpPost.addHeader("Referer", "https://weibo.com/1864722372/profile?rank=1&is_all=1");
httpPost.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36");
httpPost.addHeader("X-Requested-With", "XMLHttpRequest");
} }
使用java代码批量删除新浪微博的更多相关文章
- 【Oracle/Java】批量删除16张十万数据的表 单线程耗时45秒 多线程耗时38秒
昨天做了插入的单线程多线程比较,今天做个删除的. 单线程批量删除类代码: package com.hy.delete.singlethread; import java.sql.Connection; ...
- Java 代码完成删除文件、文件夹操作
import java.io.File;/** * 删除文件和目录 * */public class DeleteFileUtil { /** * 删除文件,可以是文件或文件夹 ...
- Java代码批量插入数据到MySQL
1.批量插入 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundExc ...
- Redis批量删除缓存数据
背景: 在使用redis中,经常会遇到批量删除缓存的情况,但是对于在客户端中,如果一个一个的删除key,则需要较长时间及相对麻烦,可以使用以下命令,批量删除缓存. 本地批量删除KEY: ./redis ...
- tp5 全选,全不选 ,ajax批量删除
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- springmvc+mybatis用多选框批量删除的功能Java代码
今天写了一个批量删除的功能,在后台传值过程中一直出错,最终还是请教了北京的一位高手帮我解决的,在此首先要好好感谢他,以后我有幸能帮助别人的话,决不推辞. 废话不说,直接进入正题,我会将在编写过程中出现 ...
- mySql事务_ _Java中怎样实现批量删除操作(Java对数据库进行事务处理)?
本文是记录Java中实现批量删除操作(Java对数据库进行事务处理),在开始之前先来看下面这样的一个页面图: 上面这张图片显示的是从数据库中查询出的出租信息,信息中进行了分页处理,然后每行的前面提 ...
- Magicodes.WeiChat——ASP.NET Scaffolding生成增删改查、分页、搜索、删除确认、批量操作、批量删除等业务代码
关于T4代码生成这块,我之前写过几篇帖子,如:<Magicodes.NET框架之路——让代码再飞一会(ASP.NET Scaffolding)>(http://www.cnblogs.co ...
- SQL中批量删除被注入的恶意代码的方法
下文将为您介绍SQL中批量删除被注入的恶意代码的方法,供您参考,如果您也遇到了这样的问题,不妨一看,相信对您会有所帮助. 1,如果你的数据表很少的话,那么写几条简单的sql就搞定了 对于表中的nvch ...
随机推荐
- Pessimistic and Optimistic locking
事务隔离通常通过锁定任何对事务中资源的访问来实现的.总的来说,有两种方法针对事务的锁定:乐观锁(Pessimistic locking)和悲观锁(Optimistic locking) 悲观锁(Pes ...
- java.net.UnknownHostException: lc001 未知的网络服务
java.net.UnknownHostException: lc001 未知的网络服务 读取的是虚拟机的名称 一.查询环境变量 :echo $HOSTNAME lc001 没什么问题 二.查host ...
- 升级MySQL5.7,开发不得不注意的坑
前段时间,将线上MySQL数据库升级到了5.7.考虑到可能产生的不兼容性,在升级之前,确实也是战战兢兢,虽然测试环境,开发环境早在半年前就已提前升级. 基于前期的调研和朋友的反馈,与开发相关的主要有两 ...
- virtualenv虚拟环境的使用
前提条件:安装好python环境并配置好环境变量(可参考另一篇博文,python安装及配置) 1.打开cmd命令终端 pip3 install virtualenvwrapper-win(我电脑上面已 ...
- shell 小工具
1.打印进度条(待完善) #!/bin/sh printf -- 'Performing asynchronous action..'; DONE=; printf -- '............. ...
- 海康威视笔试(C++)
1. select和epoll的区别 2.服务器并发量之高性能服务器设计 3.SQL关键字 4.TCP乱序和重传的问题 5.c++对象内存分配问题 6.c++多线程 join的用法: Thread类的 ...
- Accordion CodeForces - 1101B (实现)
An accordion is a string (yes, in the real world accordions are musical instruments, but let's forge ...
- R语言绘制直方图,
直方图: 核密度函数: 练习题目1: 绘制出15位同学体重的直方图和核密度估计图,并与正态分布的概率密度函数作对比 代码如下: > w <- c(75.0, 64.0, 47.4, 66. ...
- oc之考试答题类效果
https://www.jianshu.com/p/ec29feb0b5a6 2017.07.27 11:48* 字数 424 阅读 615评论 9喜欢 11 demo地址:https://githu ...
- 多线程系列之七:Read-Write Lock模式
一,Read-Write Lock模式 在Read-Write Lock模式中,读取操作和写入操作是分开考虑的.在执行读取操作之前,线程必须获取用于读取的锁.在执行写入操作之前,线程必须获取用于写入的 ...