36漫画刷邀请Java版
逛b站看漫画看迷了
准备来论坛找个成品拿去看漫画
看见了36漫画有个刷邀请的分析帖和一个Python复现的帖子
不过环境都没搭,就用Java写了个
刷了几百个邀请顺手给大伙分享出来
Java版:
- package org.example;
- import com.alibaba.fastjson.JSONObject;
- import okhttp3.*;
- import javax.crypto.Cipher;
- import javax.crypto.SecretKey;
- import javax.crypto.SecretKeyFactory;
- import javax.crypto.spec.DESedeKeySpec;
- import javax.crypto.spec.IvParameterSpec;
- import java.nio.charset.StandardCharsets;
- import java.security.SecureRandom;
- import java.security.spec.AlgorithmParameterSpec;
- import java.time.LocalDate;
- import java.time.format.DateTimeFormatter;
- public class ComicsInvita {
- private static final String ALGORITHM = “DESede/CBC/PKCS5Padding”;//加解密类型
- private static final String SECRET_KEY = “OW84U8Eerdb99rtsTXWSILDO”;//秘钥
- private static final byte[] IV_BYTES = “SK8bncVu”.getBytes(StandardCharsets.UTF_8);//iv偏移
- /**
- * DES数据加密
- *
- * @param plaintext 需要加密的字符串
- * @return 加密结果
- */
- private static String encrypt(String plaintext) throws Exception {
- DESedeKeySpec desKeySpec = new DESedeKeySpec(SECRET_KEY.getBytes(StandardCharsets.UTF_8));
- SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(“DESede”);
- SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
- Cipher cipher = Cipher.getInstance(ALGORITHM);
- AlgorithmParameterSpec ivSpec = new IvParameterSpec(IV_BYTES);
- cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivSpec);
- byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes(StandardCharsets.UTF_8));
- return new String(java.util.Base64.getEncoder().encode(encryptedBytes), StandardCharsets.UTF_8);
- }
- /**
- * Returns 获取今天的年月日
- *
- * @return 年月日
- */
- public static String getTodayDate() {
- LocalDate now = LocalDate.now();
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern(“yyyy-MM-dd”);
- return now.format(formatter);
- }
- /**/
- /**
- * 获取封装的数据
- *
- * @param code 邀请码
- * @return 加密后的数据
- */
- public static String getData(String code) throws Exception {
- //封装数据
- JSONObject json = new JSONObject();
- json.put(“sourceType”, “novel”);
- json.put(“platform”, “android”);
- json.put(“packageName”, “sanliumanhua.apps.com”);
- json.put(“version”, “9tg.06.07.207”);
- json.put(“channel”, “gw”);
- json.put(“deviceno”, getRandomId(16));
- json.put(“ts”, getTodayDate());
- json.put(“code”, code);
- return encrypt(json.toString());
- }
- /**
- * 生成指定长度的随机字符串
- *
- * @param len 生成的随机字符串长度
- * @return 生成的字符串
- */
- public static String getRandomId(int len) {
- String characters = “0123456789abcdefghijklmnopqrstuvwxyz”;
- SecureRandom random = new SecureRandom();
- StringBuilder builder = new StringBuilder(len);
- for (int i = 0; i < len; i++) {
- int randomIndex = random .nextInt(characters .length());
- char randomChar = characters .charAt(randomIndex);
- builder.append(randomChar);
- }
- return builder.toString();
- }
- /**
- * 刷36漫画邀请数
- */
- public static void main(String[] args) throws Exception {
- OkHttpClient client = new OkHttpClient();
- int success = 0, fail = 0;//成功与失败次数
- String inviteCode = “35209893”;//邀请码
- int number = 10;//需要刷的次数
- for (int i = 0; i < number; i++) {
- RequestBody formBody = new FormBody.Builder()
- .add(“data”, getData(inviteCode))
- .add(“action”, “verifycode”)
- .build();
- Request request = new Request.Builder()
- .url(“https://lb.pigqq.com/UserShareAction.aspx”)
- .post(formBody)
- .build();
- Response response = client.newCall(request).execute();
- String responseBody = response.body().string();
- if (responseBody.contains(“验证通过”)) {
- ++success;
- System.out.println(“当前请求第” + (i + 1) + “次 结果成功”);
- } else {
- ++fail;
- System.out.println(“当前请求第” + (i + 1) + “次 结果失败”);
- }
- }
- System.out.println(“成功=” + success + “\n失败=” + fail);
- }
- }
复制代码
蓝奏云 密码:hk6m
发表评论