2015-11-20 26 views
5

Tôi đang cố đăng nhập vào trang web của trường bằng Yêu cầu, nhưng nó không vượt qua trang đăng nhập và không trả lại nội dung trong các trang được bảo vệ bằng mật khẩu. Tất cả những gì nó làm là trả về HTML của trang đăng nhập. Twill sẽ không hoạt động vì trang này yêu cầu javascript. . Các công cụ đăng nhập HTML làĐăng nhập bằng Python vào một trang web có dạng javascript

<!--box content--> 

<div id="noscript" class="feedback-alert"> To sign in to PowerSchool, you must use a browser that supports and has JavaScript enabled. </div> 
<fieldset id="login-inputs" class="hide"> 

    <div> 
      <label>Username</label> 
      <input type="text" id="fieldAccount" name="account" value="" size="39" /> 
    </div> 
    <div> 
      <label>Password</label> 
      <input type="password" name="pw" value="" size="39" /><div id="login-help"><a href="/public/account_recovery_begin.html">Having trouble signing in?</a></div> 
    </div> 
    <div id="translatorInput"> 
      <label>Translator Sign In</label> 
      <input type="password" name="translatorpw" value="" size="39" /> 
    </div> 
    <div class="button-row"> 
    <button type="submit" id="btn-enter" title="Sign In To PowerSchool Parent Access" value="Enter" border="0" >Sign In</button> 
    </div> 
</fieldset> 

    <!-- box content--> 

Tôi đã kiểm tra this answer

mã hiện tại của tôi là

import requests 
payload = { 
    'account': 'username', 
    'pw': 'password' 
} 
with requests.Session() as s: 
    p = s.post('https://powerschool.-/public/home.html', data=payload) 
    print p.text 

    r = s.get('https://powerschool.-/guardian/studentsched.html') 
    print r.text 

nhưng tôi dường như không thể đăng nhập vào trang. Câu hỏi của tôi là tôi cho rằng để có một trọng tải để nhấn nút 'gửi' hoặc một cái gì đó? Tôi đã thử 'action' : 'login' và các công cụ như thế nhưng không ai trong số đó hoạt động. Ngoài ra, tôi không cần số translatorpw vì vậy tôi có nên viết 'translatorpw': '' hoặc chỉ bỏ qua điều đó không? Rõ ràng là tôi đặt tên người dùng/mật khẩu thực của mình trong chương trình trên máy tính xách tay của mình. Cảm ơn trước!

Chỉnh sửa: Tôi vừa mới sử dụng Selen và nó hoạt động rất dễ dàng.

+0

Tôi không chắc chắn nhưng chương trình của bạn có thể phải hoạt động nhiều hơn như trình duyệt. Bạn sẽ phải kiểm tra trang, kiểm tra tất cả các trường của 'p', và cố gắng tìm ra những gì máy chủ mong đợi. Có mã javascript trên trang có nhận xét về yêu cầu POST. Bạn sẽ phải xem xét tất cả những điều đó. – RobertL

+0

Có, tôi đã tìm trong HTML được trả về bởi mã của tôi và nó không có bất kỳ thứ gì trông giống như trang ở trang khác, vì vậy tôi cũng bối rối về điều đó. – bolkols

Trả lời

0

Cố gắng thiết lập tiêu đề tùy chỉnh như một số trang web từ chối mặc định yêu cầu đại lý

import requests 

    payload = { 
    'account': 'username', 
    'pw': 'password' 
    } 

    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0'}  

with requests.Session() as s: 
    p = s.post('https://powerschool.-/public/home.html', data=payload, headers=headers) 
    print p.text 

    r = s.get('https://powerschool.-/guardian/studentsched.html', headers=headers) 
    print r.text 

Kiểm tra nếu có bất kỳ thông số bổ sung mà được gửi với bài yêu cầu của bạn, nếu có thì gửi nó trong tải trọng quá.

Các vấn đề liên quan