Подтвердить что ты не робот

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

Возможно ли это?

4b9b3361

Ответ 1

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

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

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

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

submit('0')

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

Ответ 2

Позвольте мне попытаться сделать это простым, предположим, что 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 script

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

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

Надеюсь, что это когда-нибудь поможет кому-то.

Ответ 3

Как правило, вам понадобятся файлы cookie для входа в сайт, что означает cookielib, urllib и urllib2. Здесь класс, который я написал, когда играл в интернет-игры в Facebook:

import cookielib
import urllib
import urllib2

# set these to whatever your fb account is
fb_username = "[email protected]"
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 или Redirect, но они не болят, и это делает нож более надежным. Вам также могут не понадобиться файлы cookie, но это трудно сказать только из той формы, которую вы опубликовали. Я подозреваю, что вы можете, исключительно из ввода "Запомнить меня", который был прокомментирован.

Ответ 4

import cookielib
import urllib
import urllib2

url = 'http://www.someserver.com/auth/login'
values = {'email-email' : '[email protected]',
          '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

Ответ 5

Автоматизация веб-страницы? Определенно "веббот"

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

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

from webbot import Browser 
web = Browser()
web.go_to('google.com') 
web.click('Sign in')
web.type('[email protected]' , 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

Ответ 6

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

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

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

Ответ 8

Для обычных учетных данных это будет работать.

Полезной нагрузкой будут значения, которые вы передаете в форму (имя пользователя и пароль). Но ключ для них должен совпадать с идентификатором элемента ввода в этих полях.

Например: это пример страницы, где мы можем проверить это: http://testing-ground.scraping.pro/login

    input id="usr"  
    input id="pwd"

Но URL, который мы передаем, не тот, что на странице входа. URL-адрес - это целевой URL-адрес в форме, в которой обрабатываются учетные данные. Вы можете найти это, проверив параметр действия отправляемой формы.

    action="login?mode=login"

Таким образом, параметром действия в представлении формы HTML будет URL.

import requests

url = 'http://testing-ground.scraping.pro/login?mode=login'
payload = {'usr': 'admin',
          'pwd': '12345'}

r = requests.post(url, data=payload)
print(r.url)

Результат: http://testing-ground.scraping.pro/login?mode=welcome