0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 42
1

Заполнить форму авторизации и залогиниться на сайт (BeautifulSoap)

27.01.2016, 20:04. Показов 14174. Ответов 19

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Необходимо авторизироваться на сайте, строку с логином и паролем в тегах сайта нашел (использовал BeautifulSoup) и добавил туда логин и пароль. Если ввести на странице value="login", value="parol", то на сайт зайти можно.
Интересует реально ли заставить скрипт самому дописать нужные значения в строки, и нажать кнопку "Enter"
Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.01.2016, 20:04
Ответы с готовыми решениями:

Скрыть форму входа на сайт, после успешной авторизации?
Как скрыть форму входа на сайт, после успешной авторизации??? И чтобы вместо входа стояла надпись...

Забанили сайт, защел через прокси сайт не могу залогиниться
В общем забанили лост фильм, захожу через проксифрии или 010101pro-4u, но когда пытаюсь логин и...

Перейти на сайт, заполнить форму, нажать на кнопку и спарсить результат
Доброго времени суток. Есть онлайн ip калькулятор. Нужно ввести данные в поля ввода (Адрес 1...

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

Как правильно залогиниться в форму на сайте?
Всем привет. Не могу залогиниться на сайте. Покажите плз где ошибка: $referer =...

19
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
27.01.2016, 20:19 2
А почему нельзя то, ты же со статически заданными данными зашел. В чем проблема подставлять туда разные значения?
2
0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 42
27.01.2016, 20:38  [ТС] 3
Не могу понять как заставить свой код изменить значение и нажать кнопку вход
это получает скрипт

input id="mailbox__login" type="text" size="10" name="Login" tabindex="3" class="mailbox__login mix_placeholder" placeholder="bvz zobrf"

input id="mailbox__password" type="password" size="15" name="Password" tabindex="4" value autocomplete="current-password" class="mailbox__password mix_placeholder" placeholder="пароль"
и добавляет:
Python
1
2
3
4
5
6
7
8
9
10
11
A = cols[0].input
B = str(A)
C = ' value="мой логин"/>'
 
print(B[:-2] + C) # Login
 
A2 = cols[1].input
B2 = str(A2)
C2 = ' value="мой пароль"/>'
 
print(B2[:-2] + C2) #password

А вот как добавить эти изменения в код страницы понять не могу
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
27.01.2016, 21:44 4
Цитата Сообщение от Фархад93 Посмотреть сообщение
Не могу понять как заставить свой код изменить значение и нажать кнопку вход
Это не нужно. Ты работаешь с запросами, по этому тебе надо смотреть какие данные и куда посылаются и эмулировать запрос, а не менять html.
1
0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 42
27.01.2016, 21:53  [ТС] 5
alex925, Спасибо, можете подсказать какие библиотеки использовать, теперь начну все заново
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
27.01.2016, 21:57 6
Фархад93, Лично я пользуюсь всегда связкой requests + lxml
1
0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 42
27.01.2016, 22:22  [ТС] 7
alex925, не получается установить lxml, обновил питон до 3.5.1 но все равно выдает ошибку когда устанавливаю через pip
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
27.01.2016, 22:28 8
Фархад93, потому, что дело не в версии python, а в том, что нужно устанавливать из заранее собранного заботливыми дядями whl http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml
А иначе надо ставить си и все зависимости и компилить самому, но на мастдайке, это катастрофически геморно.
1
0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 42
27.01.2016, 22:32  [ТС] 9
alex925, там не нашел версию для 3.4.3
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
27.01.2016, 22:38 10
Вот не представляю, как надо искать и не найти
Миниатюры
Заполнить форму авторизации и залогиниться на сайт (BeautifulSoap)  
1
0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 42
27.01.2016, 22:57  [ТС] 11
alex925, Спасибо, установил (когда искал думал надо найти именно 3.4.3, отдельное спасибо за подчеркивание), теперь надо изучать эмулирование запросов lxml и requests ?
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
27.01.2016, 23:02 12
Цитата Сообщение от Фархад93 Посмотреть сообщение
requests
Этим посылаешь запросы
Цитата Сообщение от Фархад93 Посмотреть сообщение
lxml
Этим парсиш полученный html.
1
0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 42
27.01.2016, 23:23  [ТС] 13
alex925, это часть мне понятна, а каким образом мне дополнить теги (логином и паролем) на самой странице в браузере и перейти уже на свой аккаунт?
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
27.01.2016, 23:28 14
Цитата Сообщение от Фархад93 Посмотреть сообщение
а каким образом мне дополнить теги (логином и паролем) на самой странице в браузере и перейти уже на свой аккаунт?

Цитата Сообщение от alex925 Посмотреть сообщение
Это не нужно. Ты работаешь с запросами, по этому тебе надо смотреть какие данные и куда посылаются и эмулировать запрос, а не менять html.
1
0 / 0 / 0
Регистрация: 20.11.2015
Сообщений: 42
27.01.2016, 23:52  [ТС] 15
alex925, У вас нет примера? не могу понять

Добавлено через 38 секунд
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import urllib.request
from lxml import html
import requests
 
def get_html(url):
    page = requests.get('http://mail.ru')
    #response1 = HTMLresponse(url)
 
    print(page)
    #return page.read()
 
 
def main():
    get_html('http://mail.ru')
 
if __name__ == '__main__':
    main()
Выдает это:
<Response [200]>
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
28.01.2016, 14:34 16
Лучший ответ Сообщение было отмечено Фархад93 как решение

Решение

Вот один из возможных примеров
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import requests
import lxml.html
 
from lxml import html
 
 
login = ''
password = ''
 
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.0; rv:14.0) Gecko/20100101 Firefox/14.0.1',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
    'Accept-Encoding': 'gzip, deflate',
    'Connection': 'keep-alive',
    'DNT': '1'
}
session = requests.session()
 
page = lxml.html.fromstring(session.get('http://m.vk.com/').content)
form = page.forms[0]
form.fields['email'] = login
form.fields['pass'] = password
r = session.post(form.action, data=form.form_values())
 
 
r2 = session.post('http://vk.com/video.php')
print(r.text)
Вот один из вариантов авторизации, но он не всегда подходит, потому что не на всех сайтах поля авторизации сделаны с помощью тега form.
3
Marinero
28.01.2016, 15:28
  #17

Не по теме:

alex925, Искал-искал: куда Вы headres засунули в коде?

0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
28.01.2016, 15:32 18
Лучший ответ Сообщение было отмечено Фархад93 как решение

Решение

Да, извиняюсь, недосмотрел.
Должен был в 19 строке написать
Python
1
session.headers = headers
1
Эксперт Pascal/Delphi
103 / 91 / 32
Регистрация: 30.05.2015
Сообщений: 594
01.03.2016, 22:19 19
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import requests
import lxml.html
 
from lxml import html
 
 
login = ''
password = ''
 
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.0; rv:14.0) Gecko/20100101 Firefox/14.0.1',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
    'Accept-Encoding': 'gzip, deflate',
    'Connection': 'keep-alive',
    'DNT': '1'
}
session = requests.session()
 
page = lxml.html.fromstring(session.get('http://m.vk.com/').content)
form = page.forms[0]
form.fields['email'] = login
form.fields['pass'] = password
r = session.post(form.action, data=form.form_values())
 
 
r2 = session.post('http://vk.com/video.php')
print(r.text)
не хотелось новую тему создавать
скажите, как будет выглядеть аналогичный код используя только BeautifulSoap и requests ?
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
02.03.2016, 12:17 20
mmm_corp, lxml работает со скоростью Си и очень удобен в использовании, зачем сдался этот bs?
0
02.03.2016, 12:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.03.2016, 12:17
Помогаю со студенческими работами здесь

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

Залогиниться при входе на сайт
Приветствую, подскажите как залогиниться при посещении этого сайта? Читаю сайт вот так: ...

Через httpwebrequest залогиниться на сайт
Ребята, привет! Такой вопрос: нужно через httpwebrequest залогиниться на сайт, для этого нужно в...

WebBrowser, залогиниться на сайт программно
Мне нужно залогиниться на сайт программно. Программно ввожу данные (логин, пароль), а затем нажимаю...

Как залогиниться на сайт программно?
Здравствуйте. Такая ситуация: Мне нужно при надатии на кнопку в диалоге прочитать информацию с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru