入侵初步

  入侵的方式有很多种,技术手段的运用将事半功倍。

  做为正大光明,并且并不违法的做法就是要建立一批能打硬战的水军队伍,越多越好,话说sohu的服务多,有微博,博客等等,还将会有N多免费的服务在推出,所以我就就像<<搭车去柏林>>的谷岳一样,准备搭乘这种免费的班车。

  注册成为sohu的会员是一切的基础,手动做没有问题。但是一天要申请N多帐号就是一个问题。好,我介绍一下我使用的工具。

  htmlunit,导入这个相关包就可以

      如下代码是测试成功的示例,因为注册时填写哪个验证码是一个很为难的工作,所以我也有对付的方法。只做为参考,代码很乱,大家姑且看吧。

 

  先说下运行效果:

 


入侵初步_第1张图片

 

   如下是测试代码,请大家笑纳:

 

  package com.antbee.invade.begin;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.GeneralSecurityException;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import org.junit.Test;

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
import com.gargoylesoftware.htmlunit.html.HtmlDivision;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlImageInput;
import com.gargoylesoftware.htmlunit.html.HtmlInput;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;

public class InvadeSohuMail {

	private final static String BASE_SING_URL = "http://passport.sohu.com";
	private final static String REG_MAIL_URL = BASE_SING_URL + "/web/dispatchAction.action?appid=1000&ru=http://mail.sohu.com/reg/signup_success.jsp";
	private final static String LOGIN_MAIL_URL = "http://mail.sohu.com/";
	private final static String MODIFY_INFO_URL = "https://passport.sohu.com/web/updateInfo.action?modifyType=userinfo";
	private WebClient client;

	@Test
	public void regMail() throws FailingHttpStatusCodeException, MalformedURLException, IOException, InterruptedException {
		init();
		HtmlPage signPage = client.getPage(REG_MAIL_URL);
		HtmlForm regForm = signPage.getFormByName("form1");
		regForm.click();

		HtmlInput u = regForm.getElementById("sohupp-email");
		HtmlInput psw = regForm.getElementById("sohupp-password");
		HtmlInput psw2 = regForm.getElementById("sohupp-confirmpwd");
		HtmlInput maskCode = regForm.getElementById("sohupp-validatecode");
		HtmlAnchor refreshButton = regForm.getElementById("sohupp-refreshvcode");
		u.focus();
		u.setValueAttribute("z9sshil98yqDnqg1f");
		u.mouseOut();
		u.click();

		psw.focus();
		psw.setValueAttribute("6byxdfdfzvwNLMyqfPd");
		psw.mouseOut();
		psw.click();

		psw2.focus();
		psw2.setValueAttribute("6bsadfyxzvwNLMyqfPd");
		psw2.mouseOut();
		psw2.click();

		maskCode.focus();
		maskCode.click();
		refreshButton.click();

		HtmlDivision maskPic = (HtmlDivision) signPage.getElementById("checkpic");// /servlet/Captcha?time=a
		String maskPicStyle = maskPic.getAttribute("style");
		String maskCodeImageUrl = maskPicStyle.split(";")[2];
		maskCodeImageUrl = maskCodeImageUrl.replace("background: url(\"", "");//
		maskCodeImageUrl = maskCodeImageUrl.substring(0, maskCodeImageUrl.indexOf(")") - 1);

		JFrame f2 = new JFrame();
		JLabel l = new JLabel(new ImageIcon(new URL(BASE_SING_URL + maskCodeImageUrl.trim())));
		System.out.println("图片地址:" + maskCodeImageUrl.trim());
		f2.getContentPane().add(l);
		f2.setSize(200, 200);
		f2.setTitle("验证码");
		f2.setVisible(true);
		String valicodeStr = JOptionPane.showInputDialog("请输入验证码:");
		f2.setVisible(false);
		System.out.println("验证码:" + valicodeStr);
		maskCode.setValueAttribute(valicodeStr);
		maskCode.mouseOut();
		maskCode.click();

		HtmlSubmitInput regButton = (HtmlSubmitInput) regForm.getElementById("sohupp-submit");
		regButton.focus();

		u.dblClick();
		psw.dblClick();
		psw2.dblClick();
		maskCode.dblClick();

		regButton.click();
		regButton.mouseOut();
		regButton.dblClick();
		HtmlPage sumitPage = regButton.click();
		// Thread.sleep(30000);
		System.out.println(sumitPage.getUrl());

		String successTitle = sumitPage.getTitleText();
		if (successTitle.equals("搜狐通行证")) {
			System.out.println("成功");
		}
		// System.out.println(sumitPage.asXml());
	}

	@Test
	public void welcomeSohuMail() throws FailingHttpStatusCodeException, MalformedURLException, IOException, InterruptedException {
		SoldierModel soldierModel = new SoldierModel();
		soldierModel.setScreenCode("efbe13av6sadfc4nss");
		soldierModel.setUserPassword("cwA5sh5asdfasbA3Jss87jJ");
		soldierModel.setUserName("渡过快乐的每一天!");
		loginSohuMail(soldierModel);
	}

	/**
	 * 登录sohuMail
	 * 
	 * @throws IOException
	 * @throws MalformedURLException
	 * @throws FailingHttpStatusCodeException
	 * @throws InterruptedException
	 */
	private void loginSohuMail(SoldierModel soldierModel) throws FailingHttpStatusCodeException, MalformedURLException, IOException, InterruptedException {
		init();
		HtmlPage loginPage = client.getPage(LOGIN_MAIL_URL);
		HtmlInput userName = loginPage.getHtmlElementById("username");
		HtmlInput password = loginPage.getHtmlElementById("password");
		HtmlImageInput loginButton = loginPage.getHtmlElementById("login_img");

		userName.focus();
		userName.setValueAttribute(soldierModel.getScreenCode());
		userName.mouseOut();

		password.focus();
		password.setValueAttribute(soldierModel.getUserPassword());
		password.mouseOut();

		loginButton.focus();
		loginButton.click();
		Thread.sleep(28000);
		HtmlPage welcomePage = client.getPage(LOGIN_MAIL_URL);
		String welcomeTitle = welcomePage.getTitleText().trim();
		System.out.println(welcomeTitle);
		Boolean successFlag = false;
		if (welcomeTitle.equals("闪电邮 - 搜狐")) {
			successFlag = true;
		}
		if (successFlag) {
			HtmlPage modifyInfoPage = client.getPage(MODIFY_INFO_URL);
			HtmlInput userId = modifyInfoPage.getHtmlElementById("userid");
//			List list = modifyInfoPage.getElementsByName(name)
//	        for( Iterator it = list.iterator(); it.hasNext(); ) {
//	            HtmlRadioButtonInput radio =
//	(HtmlRadioButtonInput)it.next();
//	            System.out.println(radio.getValueAttribute() + ' ' +
//	radio.getNextSibling().asText() );
//	        }
			HtmlRadioButtonInput female = modifyInfoPage.getHtmlElementById("female");
			
			HtmlInput year = modifyInfoPage.getHtmlElementById("year");
			HtmlInput month = modifyInfoPage.getHtmlElementById("month");
			HtmlInput day = modifyInfoPage.getHtmlElementById("day");
			HtmlInput userProvince = modifyInfoPage.getElementByName("user.province");
			HtmlInput userCity = modifyInfoPage.getElementByName("user.city");
			HtmlInput userEducation = modifyInfoPage.getElementByName("user.education");
			
			userId.focus();
			userId.mouseDown();
			userId.setValueAttribute(soldierModel.getUserName());
			userId.mouseUp();
			
			female.focus();
			female.mouseDown();
			female.click();
			female.mouseUp();
			
			year.setValueAttribute("1988");
			month.setValueAttribute("03");
			day.setValueAttribute("11");
			userProvince.setValueAttribute("上海");
			
			HtmlSubmitInput submitUserInfo = modifyInfoPage.getElementByName("submit");
			HtmlPage userInfoPage = submitUserInfo.click();
			System.out.println(userInfoPage.getUrl());
			System.out.println(userInfoPage.asXml());
			
		}
//		System.out.println(welcomePage.getUrl());
		// System.out.println(welcomePage.asXml());
	}

	private void init() {
		client = new WebClient(BrowserVersion.FIREFOX_3_6);
		client.setJavaScriptEnabled(true);
		client.setThrowExceptionOnScriptError(false);
		client.setThrowExceptionOnFailingStatusCode(false);
		try {
			client.setUseInsecureSSL(true);
		} catch (GeneralSecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 

 

    其中sohu也不傻,一个IP一天最多能提供15个帐号的注册,哪怎么办呢?好办,webclient启用代理呀。每15个或者12个就换一批代理。

 手累点,一个小时我注册了50个左右,但是也太累。

你可能感兴趣的:(入侵初步)