[python] Python으로 웹 사이트에 로그인하려면 어떻게해야합니까?

어떻게하니? 지정된 링크 (urllib 사용)를 입력하려고했지만 그렇게하려면 로그인해야합니다.

사이트에서 다음 소스가 있습니다.

<form id="login-form" action="auth/login" method="post">
    <div>
    <!--label for="rememberme">Remember me</label><input type="checkbox" class="remember" checked="checked" name="remember me" /-->
    <label for="email" id="email-label" class="no-js">Email</label>
    <input id="email-email" type="text" name="handle" value="" autocomplete="off" />
    <label for="combination" id="combo-label" class="no-js">Combination</label>
    <input id="password-clear" type="text" value="Combination" autocomplete="off" />
    <input id="password-password" type="password" name="password" value="" autocomplete="off" />
    <input id="sumbitLogin" class="signin" type="submit" value="Sign In" />

이것이 가능한가?



답변

능직 을 사용하고 싶을 수도 있습니다 . 사용하기 매우 쉽고 원하는 것을 할 수 있어야합니다.

다음과 같이 표시됩니다.

from twill.commands import *
go('http://example.org')

fv("1", "email-email", "blabla.com")
fv("1", "password-clear", "testpass")

submit('0')

당신은 사용할 수 있습니다 showforms()당신이 사용되면 모든 형태의 목록에 go…당신이 로그인 할 사이트로 이동 할 수 있습니다. 파이썬 인터프리터에서 시도하십시오.


답변

간단하게 만들어 보겠습니다. 사이트의 URL이 www.example.com이고 사용자 이름과 비밀번호를 입력하여 가입해야하므로 http://www.example.com/login 이라는 로그인 페이지로 이동합니다 . .php 이제 소스 코드를보고 다음과 같은 형식 태그에있는 작업 URL을 검색합니다.

 <form name="loginform" method="post" action="userinfo.php">

이제 userinfo.php를 사용하여 ‘ http://example.com/userinfo.php ‘ 가 될 절대 URL을 만들고 이제 간단한 파이썬 스크립트를 실행하십시오.

import requests
url = 'http://example.com/userinfo.php'
values = {'username': 'user',
          'password': 'pass'}

r = requests.post(url, data=values)
print r.content

언젠가 누군가에게 도움이되기를 바랍니다.


답변

일반적으로 사이트에 로그인하려면 쿠키가 필요합니다. 이는 cookielib, urllib 및 urllib2를 의미합니다. 다음은 내가 Facebook 웹 게임을 할 때 답장 한 수업입니다.

import cookielib
import urllib
import urllib2

# set these to whatever your fb account is
fb_username = "your@facebook.login"
fb_password = "secretpassword"

class WebGamePlayer(object):

    def __init__(self, login, password):
        """ Start up... """
        self.login = login
        self.password = password

        self.cj = cookielib.CookieJar()
        self.opener = urllib2.build_opener(
            urllib2.HTTPRedirectHandler(),
            urllib2.HTTPHandler(debuglevel=0),
            urllib2.HTTPSHandler(debuglevel=0),
            urllib2.HTTPCookieProcessor(self.cj)
        )
        self.opener.addheaders = [
            ('User-agent', ('Mozilla/4.0 (compatible; MSIE 6.0; '
                           'Windows NT 5.2; .NET CLR 1.1.4322)'))
        ]

        # need this twice - once to set cookies, once to log in...
        self.loginToFacebook()
        self.loginToFacebook()

    def loginToFacebook(self):
        """
        Handle login. This should populate our cookie jar.
        """
        login_data = urllib.urlencode({
            'email' : self.login,
            'pass' : self.password,
        })
        response = self.opener.open("https://login.facebook.com/login.php", login_data)
        return ''.join(response.readlines())

HTTPS 또는 리디렉션 처리기가 반드시 필요하지는 않지만 아프지 않으며 오프너를 훨씬 더 강력하게 만듭니다. 쿠키가 필요하지 않을 수도 있지만 게시 한 양식만으로는 알 수 없습니다. 나는 당신이 순전히 주석 처리 된 ‘내 기억하기’입력에서 그럴 것이라고 생각합니다.


답변

import cookielib
import urllib
import urllib2

url = 'http://www.someserver.com/auth/login'
values = {'email-email' : 'john@example.com',
          'password-clear' : 'Combination',
          'password-password' : 'mypassword' }

data = urllib.urlencode(values)
cookies = cookielib.CookieJar()

opener = urllib2.build_opener(
    urllib2.HTTPRedirectHandler(),
    urllib2.HTTPHandler(debuglevel=0),
    urllib2.HTTPSHandler(debuglevel=0),
    urllib2.HTTPCookieProcessor(cookies))

response = opener.open(url, data)
the_page = response.read()
http_headers = response.info()
# The login cookies should be contained in the cookies variable

자세한 내용은 https://docs.python.org/2/library/urllib2.html을 방문하십시오.


답변

웹 페이지 자동화? 확실히 “웹봇”

webbot 동적으로 변경되는 ID 및 클래스 이름이 있고 셀레늄 또는 기계화보다 더 많은 방법과 기능을 가진 웹 페이지도 작동합니다.

다음은 스 니펫입니다. 🙂

from webbot import Browser
web = Browser()
web.go_to('google.com')
web.click('Sign in')
web.type('mymail@gmail.com' , into='Email')
web.click('NEXT' , tag='span')
web.type('mypassword' , into='Password' , id='passwordFieldId') # specific selection
web.click('NEXT' , tag='span') # you are logged in ^_^

문서는 또한 매우 간단하고 사용하기 쉽습니다 : https://webbot.readthedocs.io


답변

일반적으로 웹 사이트는 여러 가지 방법으로 승인을 확인할 수 있지만 타겟팅하는 웹 사이트를 통해 합리적으로 쉽게 확인할 수 있습니다.

당신이 필요로하는 것입니다 POST받는 사람 auth/login(레이블을 잊지 URL 당신이 볼 수있는 다양한 분야와 형태로 인코딩 된 BLOB for인간의 방문객들이있는 거 장식,). handle=whatever&password-clear=pwd핸들 (일명 이메일)과 비밀번호의 값을 아는 한 괜찮습니다.

아마도 POST는 Set-Cookie세션의 유효성을 검사 하는 헤더 가있는 일부 “성공적으로 로그인했습니다”페이지로 리디렉션 할 것 입니다 (쿠키를 저장하고 세션을 따라 추가 상호 작용시 다시 보내십시오!).


답변

HTTP의 경우 현재 선택은 다음과 같아야합니다. Requests- HTTP for Humans