How can I fetch authenticated data from school hom

2019-08-21 09:01发布

I want to crawl my authenticated data from university homepage and there are no API calls.

Therefore, I have to send POST data like id and password to server, but I cannot login without clicking login button.

Below is my code of university homepage.

<form action="./_login.php" method="post"  autocomplete = "off" onSubmit="return comp()" name="login"  >
                <!--<form action="https://hisnet.handong.edu/login/_login.php" method="post"  autocomplete = "off" onSubmit="return comp()" name="login"  >-->
                    <!-- E-mail¿¡ ÀÖ´Â ¸µÅ©¸¦ Ŭ¸¯ÇÏ¿© À̵¿ÇÏ´Â °æ¿ì, ÀúÀåµÇ´Â °ª 3°¡Áö -->
                <input type =hidden name ="part" value ="">
                    <input type =hidden name ="f_name" value ="">
                    <input type =hidden name ="agree" value =""> <!-- 2013.10.04 ÃÊ°ú±Ù¹« À̸ÞÀÏ¿¡¼­ °áÁ¦Ã¢À¸·Î ¹Ù·Î À̵¿ÇϱâÀ§ÇØ Ãß°¡ (±èÀÎŹ) -->

                    <table border="0" cellpadding="0" cellspacing="0" width="285">
                        <tr>
                            <td><img src="/2012_images/intro/logbox1.gif" /></td>
                        </tr>
                        <tr>
                            <td height="23" style="text-align:center; background-image:url(/2012_images/intro/logbox2.gif)">
                                <input type="radio" name="Language" value="Korean" checked>
                                <a href='#' onkeypress='checkKorean();'><font style='font-size:10pt;'>ÇѱÛ</font></a> &nbsp;
                                <input type="radio" name="Language" value="English">
                                <a href='#' onkeypress='checkEnglish();'><font style='font-size:10pt;'>English</font></a>
                            </td>
                        </tr>
                        <tr>
                            <td style="text-align:center; background-image:url(/2012_images/intro/logbox2.gif)">
                                <table border="0" cellpadding="0" cellspacing="0">
                                    <tr>
                                        <td>
                                            <table border="0" cellpadding="0" cellspacing="0">
                                                <tr>
                                                    <td><img src="/2012_images/intro/txt_id.gif" width="61" height="18" /></td>
                                                    <td><span style="">
                                                      <input type="text" style="color:#000000; height: 16px; width:138px;ime-mode:inactive" name="id" autocomplete="off" tabindex="1" placeholder="¾ÆÀ̵𸦠ÀÔ·ÂÇϽʽÿÀ."  value=""/>
                                                    </span></td>
                                                </tr>
                                                <tr>
                                                    <td height="6" colspan="2"></td>
                                                </tr>
                                                <tr>
                                                    <td><img src="/2012_images/intro/txt_pwd.gif" width="61" height="18" /></td>
                                                    <td><input type="password" style="color:#000000; height: 16px; width:138px;ime-mode:inactive" name="password" autocomplete="off" tabindex="1" placeholder="Æнº¿öµå¸¦ ÀÔ·ÂÇϽʽÿÀ."></td>
                                                </tr>
                                            </table>
                                        </td>
                                        <td style="padding-left:8px;"><input type="image" src="/2012_images/intro/btn_login.gif" /></td>
                                    </tr>
                                </table>
                            </td>
                        </tr>
                        <tr>
                            <td><img src="/2012_images/intro/logbox_line.gif" /></td>
                        </tr>
                        <tr>
                            <td style="text-align:center; background-image:url(/2012_images/intro/logbox2.gif); height:18px;">
                                <input type="checkbox" id="saveid" name="saveid" value="Y" /> ¾ÆÀ̵ðÀúÀå&nbsp;&nbsp;  <a onclick="UserLoginPopUp()" style="cursor:pointer"><font color="#FF0000"><!--<b>* HISNet ·Î±×ÀÎÀÌ ¾ÈµÉ °æ¿ì</b>--></font></a>
                            </td>
                        </tr>
                        <tr>
                            <td><img src="/2012_images/intro/logbox3.gif" /></td>
                        </tr>
                        <tr>
                            <td>&nbsp;</td>
                        </tr>
                        <tr>
                            <td><img src="/2012_images/intro/line_txt1_1.gif" border=0/><a href="/registration/regist_step1.php"><img src="/2012_images/intro/line_txt1_2.gif" border=0/></a></td>
                        </tr>
                        <tr>
                            <td><img src="/2012_images/intro/line_txt2_1.gif" border=0/><a href="javascript:findID();"><img src="/2012_images/intro/line_txt2_2.gif"  border=0/></a></td>
                        </tr>
                        <tr>
                            <td><img src="/2012_images/intro/line_txt3_1.gif" border=0/><a href="javascript:findPW();"><img src="/2012_images/intro/line_txt3_2.gif"  border=0/></a></td>
                        </tr>
                    </table>
                </form>

I implemented like this.

main() async {

  http.post('http://hisnet.handong.edu/login/login.php',
  headers: {'Content-Type': 'application/x-www-form-urlencoded'},
  body: {'id':'myID','password':'myPassword'})
  .then((response){
    print('Response status: ${response.statusCode}');
    print('Response body: ${response.body}');
  });
}

However, this implementation only fills the form and not click the login button. In this situation, I wanna send my data to server. How can I do that?

1条回答
Luminary・发光体
2楼-- · 2019-08-21 09:51

I believe here is how you grok the info.

Step 1, navigate to login page. Step 2, open your browser debugging tools and select network

Image 1

Step 3, fail or succeed the login to grab the post info

enter image description here

URL: https://hisnet.handong.edu/login/_login.php
POST data:

part
f_name
agree
Language=Korean
id=sadasd
password=asdasd
x=25
y=26

curl 'https://hisnet.handong.edu/login/_login.php' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Referer: https://hisnet.handong.edu/login/login.php' -H 'Content-Type: application/x-www-form-urlencoded' -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Cookie: PHPSESSID=vn4f2mksuv4lfo1i7co2c0e184; NSC_xfcqpsubm_WJQ=ffffffffc8f47f3e45525d5f4f58455e445a4a423660; NSC_ijtofu_ttm=ffffffffc8f47f2145525d5f4f58455e445a4a423660' -H 'Upgrade-Insecure-Requests: 1' --data 'part=&f_name=&agree=&Language=Korean&id=sadasd&password=asdasd&x=25&y=26'

With all of that information, create your login

http.post(https://hisnet.handong.edu/login/_login.php, body: { "part" : null, "f_name" : null, "agree" : null, "Language": "Korean", "id": "sadasd", "password":"asdasd", "x": "25", "y":"26"})

I honestly do no understand what all these fields mean or have a successful attempt, so I cannot verify regardless whether I am supposed to send an int or string. The worst case scenario, you need to use a webbrowser

查看更多
登录 后发表回答