2017-11-14 1 views
1

웹 사이트에 로그인하기위한 스크립트를 만들고 싶지만이 특정 페이지에서 작동하도록 고심하고 있습니다. 참고로 파이썬 요청을 사용하는 것이 새로운 편입니다. 내가 셀렌에서 기능을 수행 할 수 있고 다른 사이트에 로그인 요청을 사용할 수 있지만이 자바 스크립트를 사용하고 그 가능성이 더 내 문제는 믿습니다.Python/요청 : 웹 사이트에 로그인 자바 스크립트

코드 : 형태의 사이트 로그에서

while (FoundItem == "Nope"): 


    SignIn = "https://www.bestbuy.ca/profile/signin.aspx" 


    Email = "ctl00$CP$SignInUC1$UserNameContainer$txtUserName" 
    Password= "ctl00$CP$SignInUC1$PasswordContainer$txtPassword" 

    payload = { 
    'ctl00$CP$SignInUC1$UserNameContainer$txtUserName': 'MYEMAIL', 
    'ctl00$CP$SignInUC1$PasswordContainer$txtPassword': 'MYPASSWORD' 
} 

    with requests.Session() as s: 
     p = s.post(SignIn, data=payload) 

     print(p.content) 

HTML :

<div class="chkout-fieldbox std-half-cln signinblock checkout-form" id="sign-in"> 
    <div class="std-half-cln-wrapper"> 

     <h2 class="module-title"><span id="ctl00_CP_SignInUC1_lblSinginHeader">Returning Customer?</span></h2> 
     <p class="std-bottomspace">Please sign in to Your Account</p> 




     <fieldset class="checkout-fieldset"> 
      <legend>Sign in for fast and easy checkout</legend> 
      <ul class="clearfix"> 
       <li class="large"> 
        <label for="ctl00_CP_SignInUC1_UserNameContainer_txtUserName">Email Address</label> 


        <span id="ctl00_CP_SignInUC1_UserNameContainer"><span id="ctl00_CP_SignInUC1_UserNameContainer_proxyValidator" style="color:Red;display:none;"></span><input name="ctl00$CP$SignInUC1$UserNameContainer$txtUserName" type="email" maxlength="80" id="ctl00_CP_SignInUC1_UserNameContainer_txtUserName" tabindex="1" class="txtbox" autocomplete="off" placeholder="[email protected]" onblur="if (this.onchange!=null)this.onchange();"><span id="ctl00_CP_SignInUC1_UserNameContainer_ctl00" style="display:none;"> 
          <img id="ctl00_CP_SignInUC1_UserNameContainer_ctl00_imgUserName" src="https://images.bbycastatic.ca/sf/images/common/pictures/warningiconsmall.gif" alt=" "> 
         </span></span>    
       </li> 
       <li class="large"> 
        <label for="ctl00_CP_SignInUC1_PasswordContainer_txtPassword">Password</label> 
        <span id="ctl00_CP_SignInUC1_PasswordContainer"><span id="ctl00_CP_SignInUC1_PasswordContainer_proxyValidator" style="color:Red;display:none;"></span><input name="ctl00$CP$SignInUC1$PasswordContainer$txtPassword" type="password" id="ctl00_CP_SignInUC1_PasswordContainer_txtPassword" tabindex="2" class="txtbox" autocomplete="off" onblur="if (this.onchange!=null)this.onchange();"><span id="ctl00_CP_SignInUC1_PasswordContainer_ctl00" style="display:none;"> 
          <img id="ctl00_CP_SignInUC1_PasswordContainer_ctl00_imgPassword" src="https://images.bbycastatic.ca/sf/images/common/pictures/warningiconsmall.gif" alt=" "> 
         </span></span> 
        <span class="subtext-wrapper"> 
         <p class="subtext-notification"> 
          <a id="ctl00_CP_SignInUC1_lnkForgotPassword" href="javascript:__doPostBack('ctl00$CP$SignInUC1$lnkForgotPassword','')">I forgot my password</a> 
         </p> 


        </span> 
       </li> 
      </ul>    
      <div id="CaptchaContainer" class="clearfix btm-margin2x"> 



      </div> 


     </fieldset> 
     <a id="ctl00_CP_SignInUC1_BtnLoginButton" tabindex="4" type="submit" class="button-left btn-primary btn btn-lock" href='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$CP$SignInUC1$BtnLoginButton", "", true, "signin", "", false, true))'>Sign In</a> 
    </div> 
</div> 

+0

나는 자바 스크립트가 아닌 자바를 생각하고 있다고 믿는다. – Alter

+0

@Alter 그 점을 지적 해 주셔서 감사합니다. 당신 말이 맞았 어, 나는 자바 스크립트를 의미했다. – Aiden

답변

0

내가 당신에 대한 완벽한 대답이 없어,하지만 어쩌면 내가 방향에 도움이 될 수 있습니다 .


첫째로, 정확한지, 자바 스크립트가 호출되고 있습니다. 당신이 게시 된 HTML에서 로그인 버튼을 ctl00_CP_SignInUC1_BtnLoginButton이며, 그것의 HREF 속성에 숨겨진 몇 가지 자바 스크립트가 있습니다

버튼을 클릭 할

href='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$CP$SignInUC1$BtnLoginButton", "", true, "signin", "", false, true))

는 브라우저가 서버에 postback를 시작, 상태를 포함 로그인 페이지의

불행히도 이전에는 다시 게시를 다루지 않았습니다. 그러나이 주제에 대한 몇 가지 게시물이있는 것 같습니다. 유용하게 보이는 one이 있습니다.

+0

감사합니다. 내가 제공 한 링크를 확인해 보겠습니다. – Aiden

관련 문제