Как я могу войти на сайт с помощью 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 ответов:
может быть, вы хотите использовать твил (Он основан на механизировать). Он довольно прост в использовании и должен быть в состоянии делать то, что вы хотите.
Это будет выглядеть следующим образом:
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