2013-04-02 138 views
1

我在这里发布问题之前已经完成了2周的研究。我有权访问此内容,但需要登录才能访问内容。通过wget登录到网站

我想知道如何通过wget登录并通过wget访问它的内容?这是基本的html登录。

这里是网站的HTML代码。

<div id="loginh"> 
        <div id="form"> 
        <form name="frmLogin" action="/en/login.shtml" method="post"> 
         <input type="hidden" name="login_attempt" value="yes"> 
         <input type="hidden" name="redirect" value="/en/index.shtml"> 
         <input type="text" name="login_username" class="txtBox1" title="Enter your user name" id="username" value="User name" onfocus="clickLoginField(this);" onkeypress="javascript:if ((event.which &amp;&amp; event.which == 13)||(event.keyCode &amp;&amp; event.keyCode == 13)) {document.frmLogin.login_password.focus(); return false;}"> 
         <input type="password" name="login_password" class="txtBox2" title="Enter your password" id="pass" value="" onkeypress="javascript:if ((event.which &amp;&amp; event.which == 13)||(event.keyCode &amp;&amp; event.keyCode == 13)) { document.frmLogin.submit(); return false;}"> 
         <input type="text" id="login_password_" name="login_password_" class="loginattemptstyle" value=""> 
         <a class="login" href="javascript:void(0);" onclick="document.frmLogin.submit();">Login</a><noscript>&lt;input type="submit" value="Login"/&gt;</noscript> 
         <div class="clear"></div> 
         <table width="100%" cellpadding="5"> 
          <tbody><tr> 
           <td><a href="/en/forgottenpassword.shtml" title="Have you forgotten your password?">Forgotten password?</a></td> 
           <td><table width="100%"> 
            <tbody><tr> 
             <td><input type="checkbox" name="login_remember" style="margin-left: 0; margin-right: 5px;"></td> 
             <td>Stay signed in</td> 
            </tr> 
           </tbody></table></td> 
          </tr> 
         </tbody></table> 
        </form> 
        </div> 
        <script language="JavaScript" type="text/JavaScript"> 
        <!-- 
        $("#login_password_").val('1tCRztiXpM5jpmefqdWYn4O/ipyn5KWUneZoag=='); 
        //--> 
        </script> 
       </div> 

我曾尝试

wget -q -O- save.txt --load-cookies cookies.txt http://mysite.com/en/article1.shtml | findstr /i "'streamer'" > save3.txt 
+0

这一切都取决于服务器在做什么。它是否设置了一个cookie?它切换到http基本身份验证?你是否抓住了浏览器设置的所有cookies,等等等等等等。 –

+0

如果我没有错,它只设置1个cookie文件进行登录。 – Mowgli

回答

2

你需要做一个POST而不是GET请求

检查了这一点:

Variables in wget post data

编辑:

如果你可以使用PHP,我会建议你使用PHP史努比http://snoopy.sourceforge.net

它模拟一个Web浏览器,让你做进一步的机器人导航和HTML检索。它还模仿饼干

EDIT2:

如果你不打算使用PHP,你需要使用卷曲(以下链接,下载)。使用它您将能够检索发布的登录页面的html。

http://curl.haxx.se/download.html

基本Usage1: http://curl.haxx.se/docs/httpscripting.html

堆栈溢出后使用卷曲和POST: login POST form with cURL

实例与代码: http://www.yilmazhuseyin.com/blog/dev/curl-tutorial-examples-usage/

+0

谢谢,我已经尝试链接你张贴,但它并没有解决我的问题。我正在个人电脑上运行这些测试。我不认为PHP会对我想实现的自动化有所帮助。 – Mowgli

+1

考虑到你的评论,你需要的是CURL。 http://curl.haxx.se/download.html 我会再次编辑我的答案,并包括CURL –

+0

非常感谢,我会给cURL一个机会。 – Mowgli