打码平台注册链接 https://yescaptcha.com/i/WCjhgp
批量注册
class test9 { public static void main(String[] args) throws Exception { System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe"); ChromeOptions option = new ChromeOptions(); // option.addArguments("--proxy-server=http://" + "58.54.8.50:8888"); option.addArguments("user-agent=" + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10 11_9; rv:1.9.3.20) Gecko/2011-05-02 04:10:19 Firefox/3.8"); option.setExperimentalOption("excludeSwitches", new String[]{"enable-automation"}); ChromeDriver driver = new ChromeDriver(option); // driver.manage().window().maximize(); String url = "https://account.proton.me/signup"; driver.get(url); Thread.sleep(5000); /** * 注册 */ new WebDriverWait(driver, 120).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id=\"email\"]"))); // driver.findElement(By.xpath("//*[@id=\"email\"]")); Actions actions = new Actions(driver); actions.sendKeys(Keys.chord(Keys.LEFT_CONTROL, "xxxxxxxxxxxxxxxxxxxxxxxxxx")).build().perform(); driver.findElement(By.id("password")).sendKeys("xxxxxxxxxxxxxxxxxxxxxxxxxx"); driver.findElement(By.id("repeat-password")).sendKeys("xxxxxxxxxxxxxxxxxxxxxxxxxx"); // driver.findElement(By.xpath("/html/body/div[1]/div[3]/div[1]/div/main/div[2]/form/button")).click(); new WebDriverWait(driver, 120).until(ExpectedConditions.elementToBeClickable(By.xpath("/html/body/div[1]/div[3]/div[1]/div/main/div[2]/form/button"))).click(); new WebDriverWait(driver, 120).until(ExpectedConditions.presenceOfElementLocated(By.xpath("/html/body/div[1]/div[3]/div/div/div/main[1]/div[2]/div[3]/button"))).click(); new WebDriverWait(driver, 120).until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id=\"label_0\"]"))).click(); Thread.sleep(2000); /** * 点击加载9宫格 */ driver.switchTo().frame(0).switchTo().frame(0); new WebDriverWait(driver, 120).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id=\"checkbox\"]"))).click(); // driver.findElement(By.xpath("//*[@id=\"checkbox\"]")).click(); Thread.sleep(10000); while (true){ /** * 获取描述 */ driver.switchTo().defaultContent(); driver.switchTo().frame(0).switchTo().frame(1); String test = new WebDriverWait(driver, 120).until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".prompt-text"))).getText(); // String test = driver.findElement(By.cssSelector(".prompt-text")).getText(); System.out.println(test); /** * 找到每一个图片遍历url转base64存入list集合 */ List<WebElement> lss = driver.findElements(By.cssSelector(".task-image .image-wrapper .image")); List<String> strs = new ArrayList<String>(); for (int i = 0; i < lss.size(); i++) { // System.out.println(lss.get(i).getAttribute("style")); String ree = lss.get(i).getAttribute("style"); String s = ree.split("\"")[1]; strs.add(Base64Util.imageUrlToBase64(s)); } // System.out.println(strs); /** * 组装json向第三方打码平台发送post请求 */ JSONObject data = new JSONObject(); data.put("type", "HCaptchaClassification"); data.put("queries", strs); data.put("question", test); JSONObject jsonObject = new JSONObject(); jsonObject.put("clientKey", "xxxxxxxxxxxxxxxxxxxxxxxxxx"); jsonObject.put("task", data); String param = jsonObject.toJSONString(); String s1 = null; for (int x = 0; x < 3; x++) { String urls = "https://china.yescaptcha.com/createTask"; s1 = HttpUtils.doPostJson(urls, param); System.out.println(s1); Map<String, Object> map = JSONObject.parseObject(s1, new TypeReference<Map<String, Object>>() { }); if ((Integer) map.get("errorId") != 0) { continue; } Map<String, List<String>> map2 = JSONObject.parseObject(map.get("solution").toString(), new TypeReference<Map<String, List<String>>>() { }); /** * 获取返回的9个true,false状态,如果为true就点击 */ List<String> lst = map2.get("objects"); List<WebElement> tasklss = driver.findElements(By.cssSelector(".task-image")); for (int i = 0; i < tasklss.size(); i++) { if (lst.get(i).equals("true")) { Actions actions3 = new Actions(driver); actions3.click(lss.get(i)).perform(); } } break; } /** * 点击下一次验证,并重新循环点击新的9宫格 */ if (driver.findElement(By.cssSelector(".button-submit.button")).getAttribute("aria-label").equals("下一个挑战")){ driver.findElement(By.cssSelector(".button-submit.button")).click(); continue; } /** * 提交答案 */ if (driver.findElement(By.cssSelector(".button-submit.button")).getAttribute("aria-label").equals("提交答案")){ // driver.findElement(By.cssSelector(".button-submit.button")).click(); new WebDriverWait(driver, 120).until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".button-submit.button"))).click(); break; } if (driver.findElement(By.cssSelector(".error-text")).getText().equals("请再试一次")){ Thread.sleep(3000); continue; } } //打码结束 Thread.sleep(5000); } } class Base64Util { /** * 图片URL转Base64编码 * * @param imgUrl 图片URL * @return Base64编码 */ public static String imageUrlToBase64(String imgUrl) { URL url = null; InputStream is = null; ByteArrayOutputStream outStream = null; HttpURLConnection httpUrl = null; try { url = new URL(imgUrl); httpUrl = (HttpURLConnection) url.openConnection(); httpUrl.connect(); httpUrl.getInputStream(); is = httpUrl.getInputStream(); outStream = new ByteArrayOutputStream(); //创建一个Buffer字符串 byte[] buffer = new byte[1024]; //每次读取的字符串长度,如果为-1,代表全部读取完毕 int len = 0; //使用输入流从buffer里把数据读取出来 while ((len = is.read(buffer)) != -1) { //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度 outStream.write(buffer, 0, len); } // 对字节数组Base64编码 return encode(outStream.toByteArray()); } catch (Exception e) { e.printStackTrace(); } finally { try { if (is != null) { is.close(); } if (outStream != null) { outStream.close(); } if (httpUrl != null) { httpUrl.disconnect(); } } catch (Exception e) { e.printStackTrace(); } } return null; } /** * 图片转字符串 * * @param image 图片Buffer * @return Base64编码 */ public static String encode(byte[] image) { BASE64Encoder decoder = new BASE64Encoder(); return replaceEnter(decoder.encode(image)); } /** * 字符替换 * * @param str 字符串 * @return 替换后的字符串 */ public static String replaceEnter(String str) { String reg = "[ ]"; Pattern p = Pattern.compile(reg); Matcher m = p.matcher(str); return m.replaceAll(""); } } class HttpUtils { public static String doPostJson(String url, String json) { // 创建Httpclient对象 SocketConfig socketConfig = SocketConfig.custom().setSoTimeout(5000).build(); CloseableHttpClient httpClient = HttpClients.custom().setDefaultSocketConfig(socketConfig).build(); // CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = null; String resultString = ""; try { // 创建Http Post请求 HttpPost httpPost = new HttpPost(url); // 创建请求内容 StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON); httpPost.setEntity(entity); // 执行http请求 response = httpClient.execute(httpPost); System.out.println(response); resultString = EntityUtils.toString(response.getEntity(), "utf-8"); } catch (Exception e) { e.printStackTrace(); } finally { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } return resultString; } }
批量发邮件
public class test6 { public static void main(String[] args) throws Exception { System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe"); ChromeOptions option = new ChromeOptions(); // option.addArguments("--proxy-server=http://" + "58.54.8.50:8888"); option.addArguments("user-agent=" + "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0"); ChromeDriver driver = new ChromeDriver(option); String url = "https://mail.proton.me/u/0/drafts"; driver.get(url); // driver.findElement(By.id("keyword")).clear(); // driver.findElement(By.id("username")).sendKeys("xxxx@protonmail.com"); new WebDriverWait(driver, 120).until(ExpectedConditions.elementToBeClickable(By.id("username"))).sendKeys("randomkali@protonmail.com"); driver.findElement(By.id("password")).sendKeys("xxxxxxxxxxxxxxxxxxxxx"); // Thread.sleep(10000); driver.findElement(By.cssSelector(".button.button-large.button-solid-norm.w100.mt1-75")).click(); for (int i = 1; i < 9999999; i++) { new WebDriverWait(driver, 120).until(ExpectedConditions.elementToBeClickable(By.cssSelector(".button.button-large.button-solid-norm.mt0-25.w100.no-mobile"))).click(); new WebDriverWait(driver, 120).until(ExpectedConditions.elementToBeClickable(By.xpath("/html/body/div[1]/div[4]/div/div/div/div/div/div[2]/div/div/div/div/div/div"))).findElement(By.tagName("input")).sendKeys("1729529732@qq.com"); // driver.findElement(By.xpath("/html/body/div[1]/div[4]/div/div/div/div/div/div[2]/div/div/div/div/div/div")).findElement(By.tagName("input")).sendKeys("1729529732@qq.com"); driver.findElement(By.xpath("/html/body/div[1]/div[4]/div/div/div/div/div/div[3]/div/div")).findElement(By.tagName("input")).sendKeys("你好"); driver.findElement(By.xpath("/html/body/div[1]/div[4]/div/div/div/div/section/div/div/div[2]/button[12]")).click(); Actions actions = new Actions(driver); actions.sendKeys(Keys.chord(Keys.LEFT_CONTROL, "\u200B\u200B啊啊啊啊啊啊啊啊啊\n" + "aewwwwwwwwwwwawe\n" + "\n" + "https://www.baidu.com\n")).build().perform(); driver.findElement(By.cssSelector(".button.button-group-item.button-solid-norm.composer-send-button")).click(); System.out.println("已发送" + i + "次邮件"); Thread.sleep(1000); } } }