เข้าสู่หน้าเว็บผ่านสคริปต์


3

ฉันพยายามทำการดึงข้อมูลจากเว็บไซต์ที่ต้องการให้ฉันเข้าสู่ระบบโดยอัตโนมัติฉันเคยทำสิ่งนี้มาแล้วในอดีต (เมื่อหลายปีก่อน) โดยใช้ wget แต่วิธีนั้นดูเหมือนจะไม่ทำงานอีกต่อไป รู้ว่าทำไม

ฉันเคยทำแบบนี้:

MY_USERNAME=username # needs to be urlencoded, this can be done at http://lajm.eu/emil/dump/stringfunctions.php.
MY_PASSWORD=password # also has to be urlencoded

LOGIN_DATA="action=login&login_nick=$MY_USERNAME&login_pwd=$MY_PASSWORD"

wget --quiet --save-cookies cookiejar --keep-session-cookies --post-data $LOGIN_DATA --user-agent 'Firefox' -O um.htm http://ungdomar.se/index.php

ตอนนี้เมื่อฉันพยายามเรียกใช้สิ่งนี้ฉันเพิ่งได้รับการส่งกลับไปที่หน้าหลัก (ดังนั้นฉันไม่เพียงป้อนรหัสผ่านผิดถ้าฉันทำเช่นนั้น

ฉันได้ลองทำใน Python ด้วย เปลี่ยนไปใช้เครื่องจักร (นี้จะดีกว่า wget) แต่ฉันดูเหมือนจะได้รับผลลัพธ์เดียวกัน มันทำให้ฉันนึกไม่ออกว่าทำไมมันถึงไม่ทำงาน นี่เป็นส่วนหนึ่งของเว็บไซต์ที่เกี่ยวข้องกับแบบฟอร์ม หากต้องการดูมาร์กอัปแบบสมบูรณ์เพียงไปที่ ungdomar.se .

<div id="loginLoginbox" style="display:none;">
    <form name="login" method="post" action="/"> 
        <table width="250" cellspacing="0" cellpadding="0" border="0"> 
            <tr>
                <td colspan="2">
                    <span class="page_login_text">Användarnamn</span><br /> 
                    <input name="login_nick" type="text" style="width:250px;height:16px;line-height:10px;font-size:9px;" maxLength="30">
                </td>
            </tr> 
            <tr>
                <td colspan="2">
                    <span class="page_login_text">Lösenord</span><br /> 
                    <input name="login_pwd" type="password" style="width:250px;height:16px;line-height:10px;font-size:9px;" maxLength="25"><br />
                    <img src="/gfx/1x1.gif" width="1" height="5" alt="" />
                </td>
            </tr> 
            <tr>
                <td width="42%" valign="top">
                    <span style="vertical-align:super;" class="page_login_text">
                        <label for="login_auto">Kom ihåg mig</label>
                    </span>
                    &nbsp;
                    <input name="login_auto" id="login_auto" type="checkbox" value="1" style="width:12px; height:12px;">
                </td> 
                <td width="58%" align="right" valign="top">
                    <a class="page_login_text" href="/sendpwd.php">Glömt lösen?</a> 
                    <button class="button_active" type="submit">Logga in</button>
                </td>
            </tr> 
        </table>
    </form>
</div>

ถ้ามีคนบอกฉันได้ว่าทำไมสิ่งนี้ถึงไม่ได้ผล

แก้ไข: ฉันเพิ่งตั้งฟอร์มเว็บเล็ก ๆ ของฉันเอง (มีโครงสร้างเหมือนกับในไซต์) และมันใช้ได้ดี ทีนี้พวกเขาทำอะไรได้บ้างที่ทำให้ฉันไม่สามารถเข้าสู่ระบบโดยใช้ wget หรือใช้เครื่องจักร?


2
คำถามนี้อาจเหมาะกว่าสำหรับ stackoverflow.com
Tim S. Van Haren

Tim S. Van Haren: จริงเหรอ? ฉันจะโพสต์ที่นั่น แต่ฉันแน่ใจว่าพวกเขาจะแนะนำฉันที่นี่
Tommy Brunn

คุณลองตั้งค่าสตริงผู้ใช้ตัวแทนให้เป็นสิ่งที่เว็บไซต์คาดหวังหรือไม่ บางครั้งการเข้าสู่ระบบเว็บจะปล่อยการเชื่อมต่อไปยัง UAs ที่เฉพาะเจาะจงเพราะพวกเขารู้ว่าเว็บไซต์ของพวกเขากำลังถูกริป (ไม่ได้อ่านโดยอัตโนมัติโดยมนุษย์)
RobotHumans

ฉันพยายามตั้งค่าสตริงตัวแทนผู้ใช้ให้เหมือนกับเบราว์เซอร์ของฉัน ไม่มีโชค.
Tommy Brunn

คำตอบ:


2
  1. ดาวน์โหลด Wireshark
  2. บันทึกเบราว์เซอร์จริงที่เข้าชมเว็บไซต์
  3. ตั้งค่าตัวกรองของคุณเป็น tcp.port == 80 และค้นหาคำขอที่คุณเพิ่งทำ
  4. คลิกขวาที่แพ็คเก็ตแล้วเลือก Follow TCP Stream และบันทึกข้อความนี้ไว้ที่ใดที่หนึ่ง

ตอนนี้คุณมีบทสนทนาที่สมบูรณ์และใช้งานได้จากเว็บเบราว์เซอร์ของคุณไปยังเว็บไซต์ที่คุณต้องการขูด

ทำซ้ำขั้นตอนสำหรับสคริปต์ของคุณและดูว่าพวกเขาแตกต่างกันอย่างไรจากนั้นทำการเปลี่ยนแปลงที่เหมาะสมเพื่อแก้ไข เมื่อพวกเขาเหมือนกันไซต์จะไม่เห็นความแตกต่างระหว่างคุณและสคริปต์ของคุณ

หากคุณต้องการความยืดหยุ่นมากขึ้นฉันขอแนะนำให้เขียนสคริปต์ Python แบบง่าย ๆ แทนที่จะใช้ wget.


1
ปรากฎว่าพวกเขาเปลี่ยนการเข้ารหัสชื่อผู้ใช้และ / หรือรหัสผ่านอย่างใด การเปรียบเทียบบันทึกแสดงให้เห็นว่าชื่อผู้ใช้ของฉันถูกเข้ารหัสแตกต่างกันเล็กน้อยซึ่งเป็นสาเหตุที่ทำให้การเข้าสู่ระบบล้มเหลว
Tommy Brunn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.