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

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

67 голосов | спросил Shady 26 Mayam10 2010, 09:17:17

7 ответов


0

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

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

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

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

submit('0')

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

ответил sloth 26 Mayam10 2010, 09:38:59
0

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

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

ответил Tarun Venugopal Nair 20 FebruaryEurope/MoscowbFri, 20 Feb 2015 15:01:34 +0300000000pmFri, 20 Feb 2015 15:01:34 +030015 2015, 15:01:34
0

Обычно для входа на сайт вам нужны файлы 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, но это трудно определить по форме, которую вы разместили. Я подозреваю, что вы могли бы сделать это только из комментария «Запомнить меня», который был закомментирован.

ответил Anthony Briggs 26 Mayam10 2010, 10:19:05
0
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/. библиотека /urllib2.html

ответил blokeley 26 Mayam10 2010, 10:18:24
0

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

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

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

ответил Alex Martelli 26 Mayam10 2010, 09:27:43
0

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

ответил Andrew_1510 15 SunEurope/Moscow2013-12-15T06:53:09+04:00Europe/Moscow12bEurope/MoscowSun, 15 Dec 2013 06:53:09 +0400 2013, 06:53:09
0

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

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

ответил Natesh bhat 4 J000000Wednesday18 2018, 12:22:32

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132