How can I fetch authenticated data from school homepage?

依然范特西╮ 提交于 2019-12-25 02:25:18

问题


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:


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

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

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



来源:https://stackoverflow.com/questions/54967340/how-can-i-fetch-authenticated-data-from-school-homepage

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!