Java通过cookie实现自动登录和评论 - 基于小米社区

小白的笔记

昨天接触cookie,做一下记录

1. 准备:

(软件部分)
PostMan:一款非常好用的网络测试软件,可以模拟连接请求,甚至可以将网络请求生成各种代码如java。搬来的使用教程:
https://blog.csdn.net/fxbin123/article/details/80428216

Fiddler : 抓包工具,搬砖来的教程:https://www.cnblogs.com/conquerorren/p/8472285.html

(理论部分-我的理解)
cookie是一种有一定格式的数据包,一般作为网络的身份标记。比如登录小米社区后,服务器会返回一个cookie,其中就包含了你的登录标识,
如:浏览器按F12,打开开发者模式。cookie在头里,一个Cookie包含很多数据,有多数是不需要的,需要你用PostMan去尝试,去掉不需要的键值对key=value。
在这里插入图片描述

测试小米社区关键cookie的简单办法:
在这里插入图片描述
按send发送。
找对cookie后,在按钮send下方有何橙色code字段,点击他,就可以选择生成的代码类型
在这里插入图片描述
复制后粘贴到你的项目中就可以实现啦。

如果想要实现自动评论,就需要发送带from-data的post请求,from-data也是一种键值对数据
在这里插入图片描述

2 部分代码

// 简单登录
	static String getUrlByCookie(String urlbuf,String cookieVal) throws IOException
	{
		//打开一个连接
		URL url = new URL(urlbuf);
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
		if (cookieVal != null) {
			//发送cookie信息上去,以表明自己的身份,否则会被认为没有权限  
			connection.setRequestProperty("Cookie", cookieVal);
		}
		//connection.connect();
		connection.setDoOutput(true);
		connection.setDoInput(true);
		connection.setUseCaches(false);
		connection.setRequestMethod("POST");
		connection.setRequestProperty("Connection", "Keep-Alive");
		connection.setRequestProperty("Charset", "UTF-8");
		connection.setRequestProperty("Content-Type","multipart/form-data;");
		
		InputStream urlStream = connection.getInputStream();
		BufferedReader bufferedReader = new BufferedReader( 
				new InputStreamReader(urlStream));
		String ss=null;
		// 服务器返回结果
		String total="";
			while ((ss = bufferedReader.readLine())!=null){
				total+=ss;
			}
		bufferedReader.close();
		
		return total;
	}
	// 社区发送评论
	static Response sendUrlWithFromData(String sUrl, String cookie, String miuiBbsMsg) throws Exception {
		OkHttpClient client = new OkHttpClient();
		
		//生成Post : from-data
		MediaType mediaType = MediaType.parse("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
		RequestBody body = RequestBody.create(mediaType, 
						"------WebKitFormBoundary7MA4YWxkTrZu0gW\r\n"
						+ "Content-Disposition: form-data; name=\"tid\"\r\n\r\n34464683\r\n"
						+ "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\n"
						+ "Content-Disposition: form-data; name=\"fid\"\r\n\r\n389\r\n"
						+ "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\n"
						+ "Content-Disposition: form-data; name=\"message\"\r\n\r\n" + miuiBbsMsg +"\r\n"
						+ "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\n"
						+ "Content-Disposition: form-data; name=\"token\"\r\n\r\n\r\n"
						+ "------WebKitFormBoundary7MA4YWxkTrZu0gW--");
		// 生成连接
		Request request = new Request.Builder()
		  .url(sUrl)
		  .post(body)
		  .addHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
		  .addHeader("Cookie", cookie)
		  .addHeader("Host", "bbs.xiaomi.cn")
		  .addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36")
		  .addHeader("X-Requested-With", "XMLHttpRequest")
		  .addHeader("cache-control", "no-cache")
		  .build();

		// 返回结果
		return client.newCall(request).execute();
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一般论坛都会有隐藏贴,小米论坛更为严重,最近新入手了小米盒子,浏览小米论坛太痛苦了,基本上所有帖子都是隐藏贴,于是写了个半自动的回复工具。本程序不光可以在小米论坛回复,不光是恢复隐藏贴,还适用于所有的ctrl+enter模式发内容的地方哦,各位试试吧。 【ctrl+~】:自动随机选择预置回复语+两个随机表情(仅仅只适用于小米论坛的表情代码),并 ctrl+enter发送。 【ctrl+1】:自动收集经典回复语到本程序的预置内容库(好吧,就是个ini文件)。 怎么用呢,左手键盘,右手鼠标,遇到需要回复的帖子:鼠标点回复框,左手ctrl+~,搞定 如果你别的软件有快捷键ctrl+~或者是ctrl+1和本工具冲突的话,本工具是没法用的哦,需要关闭其他软件占用的快捷键。好多软件的老板键都是ctrl+~,请各位注意。另外如果回复的时候需要验证码,可能就有点郁闷,只能粘贴回复语,不能直接提交。。 逛论坛的时候,发现别人发的回复语,比较通用型的那种,鼠标选取起来,然后ctrl+1,这个回复语就到了咱的库里了,等你ctrl+~回复的时候就能用上了,退出程序可点击右下角托盘区图标,还有暂停功能哦。 如果是在别的论坛发帖或者是聊QQ的时候,不需要回复有那个小米论坛的表情代码后缀,可以打开配置文件设置一下,配置文件里面有说明。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值