无花的空间--http://wuhua.3geye.net-- 您今天UCWEB了吗?--http://www.ucweb.com

当你来到我的空间的时候,你会看到很多Google,Nokia,Mobile,J2ME ,Android,3G,无线开发,手机软件,手机软件开发等与Google,手机相关的文章,你千万不要惊讶。这就是我一个专注Google,无线开发的无花。传播知识,分享经验,技术交流是我开空间的直接目的。当然如果有项目开发,我还是很希望赚点外快的。

用户操作
[即时聊天] [发私信] [加为好友]
无花ID:gooogledev
40542次访问,排名2971,好友20人,关注者24人。
J2EE 2年的开发时间,
J2ME 2年的开发时间
gooogledev的文章
原创 80 篇
翻译 0 篇
转载 3 篇
评论 201 篇
无花的公告

人要吃很多苦才可以长大!

踏实平凡人应该遵守的原则!

与我TM

gooogledev@gmail.com

友情链接

我的j2me创意

Wap浏览器的源代码

用自己写的rms引擎写的电话本

RSS订阅此博客  
用抓虾订阅此博客
用google订阅此博客
用bloglines订阅此博客
    网络封神榜 | 饶荣庆
最近评论
22:main()在哪个.java中
ant-shopping:I support author's viewpoint, hoped that will have later also more better articles,
abercrombie fitch handbag
ptsell:I support author's viewpoint, hoped that will have later also more better articles,
Balenciaga Bags
真的假的,屁股上的痣也能拍出来?
leo2012:奇怪,怎么下的wap explorer不能访问wap站点
文章分类
收藏
    相册
    j2me创意图片
    j2me教程
    我的照片
    我的链接
    3G视线
    EasyMF J2ME框架
    Lucene中国
    我的Google
    无花的博客
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 自动注册gmail邮箱构想收藏

    新一篇:  一个通过rms写成的小型数据库引擎,简单的数据库引擎 | 旧一篇:  单元测试之实践四 Action的测试

     

    1.关于自动注册原理与实践。

    1.基于浏览器请求,-- 程序员写出一个程序模拟一条自动注册url,把注册所必须的参数都附在请求后面
    2.基于HttpClient 请求。实现过程比较简单,可以通过穿过ssl进行请求

    自动注册首先要解决的问题:
    1.关于注册验证吗的破解。
      1.市面上一个简单图片验证吗的开发已经不是什么难事了,对于程序生产的图片,破解起来是比较困难的,
        特别是google,我曾经不段的验证,发现,如果您单独取出那条验证吗的,话,google会说您的请求错误,
        也就是google的验证吗的前提是必须输入请求注册url才行,因此破解它是很困难的。
      2.关于中文验证吗,虽然生产原理是一样,但是给注册的人破解就跟是难了。

    由于以上原因,我没有找到一个关于破解验证吗的程序,而我本人知识水平有限,因此自动注册,我只能
    找出那些字段跟注册url,并模拟一个注册请求。

    前阵子,因为有需求,打算破解Gmail的图片识别码,进而达到自动注册Gmail邮箱的构想,

    想法大概如下,构建一个Model,保存注册Gmail邮箱必填字段,跟一些隐藏参数,

    先向Gmail注册地址进行请求服务,拿下Gmail图片验证码,进而调用图片识别程序,进行循环破解,知道破解成功,然后往Model设置识别吗的参数,

    最后调用HttpClient进行请求服务。最后分析返回htm结果进行分析,是否注册成功。

    在这里,唯一的难度就是破解验证吗程序,小弟还没找到好方法,不过至于模拟其他请求已经设置好。现在发个代码给大家看看

     

    /********************************************************************
     * 项目名称                :<b>j2me学习</b>            <br/>
     * 
     * Copyright 2005-2006 Wuhua. All rights reserved
     *******************************************************************
    */

    package org.job.four;

    /**
     * <b>类名:Member.java</b> </br> 
     * 编写日期: 2007-3-27 <br/>
     * 程序功能描述:提供对注册字段的封装,<br/>
     *  程序只需要封装一个member,再向gmail发生请求<br/>
     * Demo: <br/>
     * Bug: <br/>
     * 
     * 程序变更日期 :<br/> 
     * 变更作者 :<br/> 
     * 变更说明 :<br/>
     * 
     * 
    @author wuhua </br> <a href="mailto:rrq12345@163.com">rrq12345@163.com</a>
     
    */

    public class Member {
        
        
    private String PasswdAgain = "51jobboj"//重复密码
     
        
    private String FirstName="foxjob"//名字
        private String LastName="tang";//
        private String Email="gooooooooooooooooooooooooooogle";//email名字
        private String Passwd="51jobboj";//密码
        private String selection="who is me?";//安全问题
        
        
    private String IdentityAnswer="me to 51job"//密码安全问题答案
        private String SecondaryEmail="gooogledev@gmail.com";//第2电子邮箱
        private String loc="中国"//地点
        private String newaccountcaptcha="";  //验证吗
        
        
        
    //以下是gmail隐藏的参数
        private String Continue = "http://mail.google.com/mail/e-11-104e59efab9ad9107b5532645c608844-f30129a93b86f8b2ec791bab26d3a93974381ba7"//由于continue是java关键字,所以把c改为大写C
        private String t="6e91f0ba-47e895da-33e242a784269c0e1776";
        
    private String service="mail";
        
    private String dsh = "7874657562226198951";
        
    public final String getContinue() {
            
    return Continue;
        }

        
    public final String getDsh() {
            
    return dsh;
        }

        
    public final String getService() {
            
    return service;
        }

        
    public final String getT() {
            
    return t;
        }

        
    public final void setContinue(String continue1) {
            Continue 
    = continue1;
        }

        
    public final void setDsh(String dsh) {
            
    this.dsh = dsh;
        }

        
    public final void setService(String service) {
            
    this.service = service;
        }

        
    public final void setT(String t) {
            
    this.t = t;
        }

        
    public final String getEmail() {
            
    return Email;
        }

        
    public final String getFirstName() {
            
    return FirstName;
        }

        
    public final String getIdentityAnswer() {
            
    return IdentityAnswer;
        }

        
    public final String getLastName() {
            
    return LastName;
        }

        
    public final String getLoc() {
            
    return loc;
        }

        
    public final String getNewaccountcaptcha() {
            
    return newaccountcaptcha;
        }

        
    public final String getPasswd() {
            
    return Passwd;
        }

        
    public final String getPasswdAgain() {
            
    return PasswdAgain;
        }

        
    public final String getSecondaryEmail() {
            
    return SecondaryEmail;
        }

        
    public final String getSelection() {
            
    return selection;
        }

        
    public final void setEmail(String email) {
            Email 
    = email;
        }

        
    public final void setFirstName(String firstName) {
            FirstName 
    = firstName;
        }

        
    public final void setIdentityAnswer(String identityAnswer) {
            IdentityAnswer 
    = identityAnswer;
        }

        
    public final void setLastName(String lastName) {
            LastName 
    = lastName;
        }

        
    public final void setLoc(String loc) {
            
    this.loc = loc;
        }

        
    public final void setNewaccountcaptcha(String newaccountcaptcha) {
            
    this.newaccountcaptcha = newaccountcaptcha;
        }

        
    public final void setPasswd(String passwd) {
            Passwd 
    = passwd;
        }

        
    public final void setPasswdAgain(String passwdAgain) {
            PasswdAgain 
    = passwdAgain;
        }

        
    public final void setSecondaryEmail(String secondaryEmail) {
            SecondaryEmail 
    = secondaryEmail;
        }

        
    public final void setSelection(String selection) {
            
    this.selection = selection;
        }

      
        
        
    public static final Member getDefaultMember(){
            
            
    return new Member();
        }

    }

     

     

    package org.job.four;

    import java.io.IOException;

    import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.HttpException;
    import org.apache.commons.httpclient.HttpStatus;
    import org.apache.commons.httpclient.NameValuePair;
    import org.apache.commons.httpclient.methods.GetMethod;
    import org.apache.commons.httpclient.methods.PostMethod;
    import org.apache.commons.httpclient.params.HttpMethodParams;
    import org.job.util.Logger;

    /**
     * <b>类名:AutoRegistGmail.java</b> </br> 
     * 编写日期: 2007-3-27 <br/>
     * 程序功能描述:对Gami自动注册的启动类 <br/>
     * 注册原理实现是,封装一些gmail比填的字段,然后再通过HttpClient向Gmail请求,
     * 请求完毕后分析结果
     * Demo: <br/>
     * Bug: <br/>
     * 
     * 程序变更日期 :<br/> 
     * 变更作者 :<br/> 
     * 变更说明 :<br/>
     * 
     * 
    @author wuhua </br> <a href="mailto:rrq12345@163.com">rrq12345@163.com</a>
     
    */

    public class AutoRegistGmail {

     

        
    private static String postRegistUrl = "https://www.google.com/accounts/NewAccount";

        
    private static Logger logger = Logger.getLogger(AutoRegistGmail.class);

        
    public static void main(String[] args) {
            autoRegist();
        }


        
    public final static void autoRegist() {
            logger.debug(
    "开始自动注册Gmail.....");
        
            
    //        构造HttpClient的实例
            HttpClient httpClient = new HttpClient();
            PostMethod postMethod 
    = new PostMethod(postRegistUrl);
            Member member 
    = Member.getDefaultMember();
            
            
    //             填入各个表单域的值
            NameValuePair[] data = {
                    
    new NameValuePair("Email", member.getEmail()),
                    
    new NameValuePair("Passwd", member.getPasswd()),
                    
    new NameValuePair("PasswdAgain", member.getPasswdAgain()),
                    
    new NameValuePair("FirstName", member.getFirstName()),
                    
    new NameValuePair("Loc", member.getLoc()),
                    
    new NameValuePair("newaccountcaptcha", member
                            .getIdentityAnswer()),
                    
    new NameValuePair("IdentityAnswer", member
                            .getNewaccountcaptcha()),
                    
    new NameValuePair("Selection", member.getSelection()),
                    
    new NameValuePair("SecondaryEmail", member.getSecondaryEmail()),
                    
    new NameValuePair("continue", member.getContinue()),
                    
    new NameValuePair("dsh", member.getDsh()),
                    
    new NameValuePair("service", member.getService()) }
    ;

            
    //             将表单的值放入postMethod中
            postMethod.setRequestBody(data);
            
    try {
                
    //执行getMethod
                int statusCode = httpClient.executeMethod(postMethod);
                
    if (statusCode != HttpStatus.SC_OK) {
                    System.err.println(
    "Method failed: "
                            
    + postMethod.getStatusLine());
                }

                
    //读取内容 
                byte[] responseBody = postMethod.getResponseBody();
                
    //处理内容
                System.out.println(new String(responseBody, "UTF-8"));
            }
     catch (HttpException e) {
                
    //发生致命的异常,可能是协议不对或者返回的内容有问题
                System.out.println("Please check your provided http address!");
                e.printStackTrace();
            }
     catch (IOException e) {
                
    //发生网络异常
                e.printStackTrace();
            }
     finally {
                
    //释放连接
                postMethod.releaseConnection();
            }


        }

    }

    发表于 @ 2007年04月04日 08:56:00|评论(loading...)|编辑

    新一篇:  一个通过rms写成的小型数据库引擎,简单的数据库引擎 | 旧一篇:  单元测试之实践四 Action的测试

    评论

    #蓝奇高级验证码识别引擎QQ:631753663 发表于2008-04-12 04:23:41  IP: 59.172.77.*
    出售蓝奇高级验证码识别引擎,可准确识别新浪动网淘宝CSDN等多种复杂验证码。

    输出为一个标准DLL,可供VB,VC,Delphi,C#.NET,VB.NET,模拟精灵,按键精灵等多平台调用,调用方法简单,几行代码即可完成。独具特色的边缘检测字符分离、旋转倾斜纠正和通用字符匹配算法(无论字体和大小), 使得该引擎对于像新浪、动网、淘宝、CSDN等多种验证码均有不错的识别率,是一款效果较为理想的验证码识别引擎。附详细的调用实例和代码注释等相关技术文档。

    同时提供专业发贴机、自动投票机、自动查询器、自动充值机等各类网络软件的定制,以及各种复杂验证码的识别服务,价格依软件具体难度而定。

    官方网站 - http://www.purejoy.cn/yzm
    发表评论
    • 姓   名: 
    • 主   页:
    • 校验码: