用okHttp封装好的小工具 签到 刷帖 刷楼神器??

hik
@Ta 2019-06-23 4000点击
很简单 获取cookie,然后带cookie访问,浅显易懂,无任何难度。需要okhttp3的jar包,如下代码,改下请求中的name=hik&pass=为你自己的用户名密码就能向我发送5个你好帅了。话说帅的人都发了呢
import okhttp3.*;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.TimeUnit;
import static HttpTools.OkHttpRequestClient.CONTENTTYPE;

public class Demo1 {
    public static void main(String[] args) throws Exception {
        String cookieStr;
        Response response = postMan("https://hu60.cn/q.php/user.login.html?u=index.index.html", "", "form", "application/x-www-form-urlencoded; charset=UTF-8",
                "type=1&name=hik&pass=aaaaaaaaaa&go=%E7%99%BB%E5%BD%95");
//      获取cookie
        List<String> headers = response.headers("Set-Cookie");
        cookieStr = cookieHeader(headers);
        if (response.isSuccessful()) {
            System.out.println(response.body().string());
            for (int i = 0; i < 5; i++) {
                Response form = postMan("https://hu60.cn/q.php/msg.index.send.22230.html", cookieStr, "form",
                        "", "content=你好帅&go=%E5%9B%9E%E5%A4%8D");
                System.out.println("执行+1");
            }
        } else {
            System.out.println(response.body().string());
            throw new IOException();
        }
    }

    private static String cookieHeader(List<String> cookies) {
        StringBuilder cookieHeader = new StringBuilder();
        for (String cookie : cookies) {
            cookieHeader.append(cookie);
        }
        return cookieHeader.toString();
    }

    /**
     * post访问
     * @param url 请求地址
     * @param cookieStr cookie
     * @param submitType 提交方式 from表单跟json方式 一般from表单
     * @param contentType 可为空字符串
     * @param params 提交的参数 例如:name=zhangsan&pass=mima
     * @return
     * @throws IOException
     */
    private static Response postMan(String url, String cookieStr, String submitType, String contentType, String params) throws Exception {
        String[] paramses;
        if (params.contains("=") && params.contains("&")) {
            paramses = params.split("&");
        }else if (params.contains("=") && !params.contains("&")){
            paramses=new String[1];
            paramses[0]=params;
        }else {
            throw new Exception("参数请确保都为键值对形式");
        }
        Map<String, String> map = new HashMap<>();
        FormBody.Builder builder = new FormBody.Builder();
        RequestBody requestBody = null;
        FormBody formBody = null;
        Request requests = null;
        final OkHttpClient CLIENT = new OkHttpClient.Builder()
                .connectTimeout(60, TimeUnit.SECONDS)
                .readTimeout(60, TimeUnit.SECONDS)
                .build();
        if ("json".equals(submitType)) {
            requestBody = RequestBody.create(CONTENTTYPE, params);
            requests = new Request.Builder().url(url)
                    .post(requestBody)
                    .header("Content-Type", contentType)
                    .header("Cookie", cookieStr)
                    .build();
        } else if ("form".equals(submitType) && paramses != null) {
            for (String s : paramses) {
                String[] ss = s.split("=");
                map.put(ss[0], ss[1]);
            }
            Set<Map.Entry<String, String>> entries = map.entrySet();
            for (Map.Entry<String, String> entry : entries) {
                builder.add(entry.getKey(), entry.getValue());
            }
            formBody = builder.build();
            requests = new Request.Builder().url(url)
                    .post(formBody)
                    .header("Content-Type", contentType)
                    .header("Cookie", cookieStr)
                    .build();
        }
        Response responses = CLIENT.newCall(requests).execute();
        return responses;
    }

    private static Response getMan(String url, String cookieStr, String contentType) throws IOException {
        final OkHttpClient CLIENT = new OkHttpClient.Builder()
                .connectTimeout(60, TimeUnit.SECONDS)
                .readTimeout(60, TimeUnit.SECONDS)
                .build();
        Request requests = new Request.Builder().url(url)
                .get()
                .header("Content-Type", contentType)
                .header("Cookie", cookieStr)
                .build();
        Response responses = CLIENT.newCall(requests).execute();
        return responses;
    }
}
回复列表(4|隐藏机器人聊天)
添加新回复
回复需要登录