先说下我想干吗吧
我打算做个功能软件,来判断用户输入的邮箱地址的真实性的程序,我们半时经常见到留邮箱什么的,
有的是随便写的根本就不存在,如遇到这样的不诚实的人注册什么的,可以用程序来过滤掉。
我搜了下资料,发现,这个网站的邮箱验证功能非常准,正确率接近100%,
http://verify-email.org/我现在在想,有没办法利用这个网站,集成到自己的程序中去,即在自己的程序中,调用这个查询接口,来判断邮箱呢?理论上应该是可行的吧?可能要跨域什么之类的知识点吧,目前已能获取该网页的源码了,东东比较杂,接下来,我要怎么科学的处理有点迷茫啊,之前没做过相关的,怕走弯路,求大虾提供好的处理方法吧。

解决方案 »

  1.   

    下面贴上我删减后的网 页源码,有兴趣、有时间想练手的同学可以帮忙研究下怎么处理吧。<!doctype html>
    <head>
      <link rel="stylesheet" href="/templates/verifyemail/html/com_jcomments/default/style.css?v=21" type="text/css" />
      <link rel="stylesheet" href="/templates/verifyemail/css/template.css.php?v=1.0.6" type="text/css" />
      <script src="/components/com_jcomments/js/jcomments-v2.3.js?v=8" type="text/javascript"></script>
      <script src="/components/com_jcomments/libraries/joomlatune/ajax.js?v=4" type="text/javascript"></script>
      <script src="/templates/verifyemail/js/modernizr.js" type="text/javascript"></script>
      <script src="/media/system/js/mootools-core.js" type="text/javascript"></script>
      <script src="/media/system/js/core.js" type="text/javascript"></script>
      <script src="/media/system/js/mootools-more.js" type="text/javascript"></script>
      <script src="/media/system/js/validate.js" type="text/javascript"></script>
      <script type="text/javascript">
    function keepAlive() { var myAjax = new Request({method: "get", url: "index.php"}).send();} 
    window.addEvent("domready", function(){ keepAlive.periodical(3540000); });
    window.addEvent('domready', function(){


    new Form.Request(document.id('myForm'), document.id('result_box'), {
        requestOptions: {
            spinnerOptions: {
                message: 'Checking... please wait...'
            }
        }
    });


    document.id('checkemail').addEvent('change', function() {
    document.id('findemail').value = document.id('checkemail').value;
    });

    });  </script>
      <link rel="apple-touch-icon-precomposed" href="/templates/verifyemail/apple-touch-icon-57x57.png"> <!-- iphone, ipod, android -->
      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/templates/verifyemail/apple-touch-icon-72x72.png"> <!-- ipad -->
      <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/templates/verifyemail/apple-touch-icon-114x114.png"> <!-- iphone retina -->
      
      <link href='http://fonts.googleapis.com/css?family=Open+Sans|Dosis' rel='stylesheet' type='text/css'>
      
    <script type="text/javascript" src="/templates/verifyemail/bootstrap/js/bootstrap.min.js"></script>
    <script type="text/javascript">
    var $ = jQuery.noConflict();
    </script>

      

    <script type="text/javascript">  var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-1095323-18']);
      _gaq.push(['_trackPageview']);  (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();</script>
    </head>

    <body>
          
    <div class="container">        

    <!-- START Email Search MODULE -->
    <div class="moduletable">
    <div class="row hidden-phone"><div class="ads span6"><script type="text/javascript">
    <!--google_ad_client = "pub-1856694233004936";
    google_ad_width = 300;
    google_ad_height = 250;
    google_ad_format = "300x250_as";
    google_ad_type = "text";
    google_ad_channel = "";
    google_color_border = "FFFFFF";
    google_color_bg = "FFFFFF";
    google_color_link = "105cb6";
    google_color_text = "000000";
    google_color_url = "000000";//-->
    </script>
    <script type="text/javascript"
      src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    </script></div><div class="search_mod span6"><h4><a href="http://www.email-unlimited.com/email_verifier_professional.html" target="_blank">Email Verifier</a> - Clean your lists from bad emails.</h4>
    <h4><a href="http://www.email-unlimited.com/" target="_blank">Bulk Email Software</a> - Easy to use and powerful bulk email software.</h4>
    <h4><a href="http://email-lists1.com/" target="_blank">Email Lists</a> - Targeted email lists at a wholesales rate.</h4>
    <h4><a href="http://emailsearchtool.com/" target="_blank">Free Email Search</a> - Free people and email search engine</h4></div></div>    

    <br style="clear:both;">

    <div class="search_module hero-unit">
    <div class="row">
    <div class="left12 span5">
    <h2>Looking to verify an email?</h2>
    <p>This email verification tool actually connects to the mail server and checks whether the mailbox exists or not.</p> </div> 
    <div class="text-block span5 hidden-phone">
    <h2>What is being verified:</h2>
    <ul>
    <li>Format: "[email protected]"</li>
    <li>Valid domain: "[email protected]" is not valid</li>
    <li>Valid user: verify if the user and mailbox really exist</li>
    </ul> </div>
    </div>

    <div class="item-separator"></div>

    <div id="email" class="row">

    <div class="span11">

    <div class="">

    <div class="span">
    <form id="myForm" method="get" class="form-inline searchform form-validate" action="index.php">
    <input id="checkemail" type="text" value="" name="check" class="required validate-email span5" />
    <input type="hidden" name="option" value="com_emailverifier" />
    <input type="hidden" name="view" value="emailverifier" />
    <input type="hidden" name="layout" value="verify" />
    <input type="hidden" name="format" value="raw" />
    <input type="hidden" name="0aee635c162c132817fd3b079fe487a1" value="1" /> <input class="submit btn btn-large btn-danger span3" id="btn" type="submit" name="submitEmail" value="Verify">
    </form>
    </div>

    <div class="span">
    <form method="post" class="searchform left" action="http://emailsearchtool.com/" target="_blank">
    <input id="findemail" type="hidden" value="" name="contactEmail"/>
    <input class="form_submit span btn btn-small btn-success" id="btn_search" type="submit" name="submitEmail" value="More about this email...">
    </form>
    </div>

    <br style="clear: both;" />

    </div>

    </div>

    </div>

    </div>
    <br style="clear:both;">
     
    <div class="resultsBox" id="result_box"></div>

    </div>
    <!-- END Email Search MODULE -->
    <!-- BEGIN: Custom advanced (www.jtricks.com) -->
    <div style="height:100px;">

    <!-- AddThis Button BEGIN -->
    <div class="addthis_toolbox addthis_default_style hidden-phone" style="float:right; margin:3px; width: auto;">
    <a class="addthis_counter"></a>
    </div>
    <script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=xa-4f3e31aa02b7e4db"></script>
    <script type="text/javascript">
    var addthis_config = {
    data_track_address_bar: false,
    data_track_clickback: false
    };
    </script>
    <!-- AddThis Button END -->

    <div id="fb-root"></div>
    <script>
    (function(d, s, id) {
      var js, fjs = d.getElementsByTagName(s)[0];
      if (d.getElementById(id)) return;
      js = d.createElement(s); js.id = id;
      js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
      fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
    </script>
    <div style="float:right; margin:3px" class="fb-like"  data-send="false" data-layout="box_count" data-width="45" data-show-faces="false"></div> <!-- Place this tag where you want the +1 button to render -->
    <div style="float:right; margin:3px">
    <g:plusone size="tall"></g:plusone>
    <!-- Place this render call where appropriate -->
    <script type="text/javascript">
      (function() {
        var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
        po.src = 'https://apis.google.com/js/plusone.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
      })();
    </script>
    </div> <div style="float:right; margin:3px">
    <a href="https://twitter.com/share" class="twitter-share-button" data-count="vertical">Tweet</a>
    <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
    </div><div style="float:right; margin:3px">
    <script src="//platform.linkedin.com/in.js" type="text/javascript"></script>
    <script type="IN/Share" data-url="http://verify-email.org/" data-counter="top"></script>
    </div></div>
    </body>
    </html>
    </html>
      

  2.   

    用firebug 抓请求
    http://verify-email.org/index.php?check=123%40qq.com&option=com_emailverifier&view=emailverifier&layout=verify&format=raw&ab65fee74a592b069d79709400a55275=1&submitEmail=Verify响应:
    <div class="resultsBox">
    <div class="alert alert-block alert-info  fade in">
    <a class="close" data-dismiss="alert" href="#">&times;</a>
    <p><h3>[email protected] - Result: Ok</h3></p>
    </div>
    <pre>MX record about qq.com exists.<br/>Connection succeeded to mx1.qq.com SMTP.<br/>220 newmx29.qq.com MX QQ Mail Server<br/>
    &gt; HELO verify-email.org<br/>250 newmx29.qq.com<br/>
    &gt; MAIL FROM: &lt;[email protected]&gt;<br/>=250 Ok<br/>
    &gt; RCPT TO: &lt;[email protected]&gt;<br/>=250 OK<br/>
    </pre>
    </div>
    这样的,只能服务器端处理
      

  3.   

    是不是只要能提交URL:
    http://verify-email.org/index.php?check=123%40qq.com&option=com_emailverifier&view=emailverifier&layout=verify&format=raw&ab65fee74a592b069d79709400a55275=1&submitEmail=Verify就有判断了?
    不过,貌似把这个URL输入在浏览器中,没有响应输出啊,也不是没响应输出,输出的是:
    Invalid Token. Please refresh the page and try again.这显然还是没法判断呢
    不知,具体要怎么处理这个URL呢?
      

  4.   

    问题会不会出在ab65fee74a592b069d79709400a55275=1这个参数呢?貌似这个是加密的参数变量
      

  5.   

    要用开发人员工具,分析 请求url,refer,请求头
    重要的是参数。各参数的 来源,意义。
      

  6.   

    我记得好像有个web服务来着!找不到了!
      

  7.   

    把url的头部部,重新做参,应该可以。
      

  8.   

    请求头部
    Request URL:http://verify-email.org/index.php?check=yuhaomilan1%40sohu.com&option=com_emailverifier&view=emailverifier&layout=verify&format=raw&4a573152a10e819166ad4281981766b5=1&submitEmail=Verify返回值
    <div class="resultsBox">
    <div class="alert alert-block alert-error  fade in">
    <a class="close" data-dismiss="alert" href="#">&times;</a>
    <p><h3>[email protected] - Result: Bad</h3></p>
    </div>
    <pre>MX record about sohu.com exists.<br/>Connection succeeded to sohumx2.sohu.com SMTP.<br/>220 sohumxtc_211.sohu.com ESMTP Postfix<br/>
    &gt; HELO verify-email.org<br/>250 sohumxtc_211.sohu.com<br/>
    &gt; MAIL FROM: &lt;[email protected]&gt;<br/>=452 4.3.1 Insufficient system storage<br/>
    &gt; RCPT TO: &lt;[email protected]&gt;<br/>=503 5.5.1 Error: need MAIL command<br/>
    421 4.7.0 sohumxtc_211.sohu.com Error: too many errors<br/>
    </pre>
    </div>
      

  9.   

    用FF来查看请求与响应的相关信息容易,但要怎么利用这些信息来写代码呢?第一次做网络这方面,没经验啊。
    貌似直接用请求的URL放在浏览器地址栏中,没什么用呢。
      

  10.   

    问题是出在:ab65fee74a592b069d79709400a55275=1这个参数啊
    你有没发现,每次查询后,这个参数都变掉了?
    并且,你查询的这个参数,在我这边不能用,同样,我的在你那边也不能用,即这个参数一起在变
    如果是固定了URL都能有正确的响应的话,那就解决了老兄,这个真没那么简单的了,貌似只能,先登录他们的网络,才能用的,间接的便用,似乎难啊。
    你试下2楼的请求URL,输入到浏览器中,看能不能正确的返回值(答案是不行的呢,只有你自己查过一次后,并且在当前的浏览器中,再输入地址栏中,才会有返回值的,你换个浏览器,就不行了呢,难就难在这里了。)
      

  11.   

    理解错了,回去用iframe试试,试玩再回帖
      

  12.   

    <form action="index.php" class="form-inline searchform form-validate" method="get" id="myForm">
    <input type="email" class="required validate-email span5" name="check" value="" id="checkemail" aria-required="true" required="required" aria-invalid="false">
    <input type="hidden" value="com_emailverifier" name="option">
    <input type="hidden" value="emailverifier" name="view">
    <input type="hidden" value="verify" name="layout">
    <input type="hidden" value="raw" name="format">
    <input type="hidden" value="1" name="75a23218c425bd02446c2569e67862dd"> <input type="submit" value="Verify" name="submitEmail" id="btn" class="submit btn btn-large btn-danger span3">
    </form>除了分析提交的那个请求。
    还要分析,参数来源,意义。
    参数来源,意义,需要分析之前的请求,以及javascript
    用 正则采集一下需要的几个参数就可以了
      

  13.   

    参数来源,意义,需要分析之前的请求……
    之前没分析过相关的,水平有限,分析不来,哎,看来是无解了,不知道这里有没高人做出来可实用的demo了,有的话,共享下啊,话说不是懒惰不想写啊
      

  14.   

    主要是可用的URL弄不到,如此怎么分析响应呢,这个是难题的核心,不然,代码就好写了,
    http://verify-email.org/index.php?check=123%40qq.com&option=com_emailverifier&view=emailverifier&layout=verify&format=raw&ab65fee74a592b069d79709400a55275=1&submitEmail=Verify
    这个URL没用,应该是这个字段加密了ab65fee74a592b069d79709400a55275=1
    ab65fee74a592b069d79709400a55275这个参数是可变的,为什么是可变的,这个还不好理解。