Как я могу войти на сайт с помощью 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" />

это возможно?

7 62

7 ответов:

может быть, вы хотите использовать твил (Он основан на механизировать). Он довольно прост в использовании и должен быть в состоянии делать то, что вы хотите.

Это будет выглядеть следующим образом:

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

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

submit('0')

можно использовать showforms() чтобы перечислить все формы, как только вы использовали go(...) чтобы перейти на сайт, который вы хотите войти. Просто попробуйте его из интерпретатора python.

позвольте мне попытаться сделать это просто, предположим, URL-адрес сайта www.example.com и вам нужно зарегистрироваться, заполнив имя пользователя и пароль, поэтому мы переходим на страницу входа, скажем http://www.example.com/login.php теперь и посмотреть его исходный код и поиск действия URL он будет в форме тега что-то вроде

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

теперь возьмите userinfo.PHP, чтобы сделать абсолютный URL-адрес, который будет 'http://example.com/userinfo.php', теперь запустить простой скрипт на Python

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

веб-сайты в целом могут проверять авторизацию по-разному, но тот, на который вы ориентируетесь, кажется, делает его достаточно легким для вас.

все, что вам нужно-это POST до auth/login URL закодированный в форме blob с различными полями, которые вы видите там (забудьте метки for, Они украшение для посетителей). handle=whatever&password-clear=pwd и так далее, пока вы знаете значения для дескриптора (AKA email) и пароля, вы должны быть в порядке.

предположительно, что сообщение будет перенаправить вас на некоторые" вы успешно вошли в систему " страницы с Set-Cookie заголовок, подтверждающий вашу сессию (обязательно сохраните этот файл cookie и отправьте его обратно при дальнейшем взаимодействии по сеансу!).

для HTTP вещей, текущий выбор должен быть:запросы-HTTP для людей

автоматизация веб-страницы ? Наверняка "webbot"

webbot даже работает веб-страницы, которые имеют динамически изменяющийся идентификатор и имена классов и имеет больше методов и функций, чем selenium или mechanize.

вот фрагмент :)

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