Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 7, 2012 07:36:24

Seganapa
От: Новороссийск
Зарегистрирован: 2012-07-31
Сообщения: 139
Репутация: +  0  -
Профиль   Отправить e-mail  

Пример Post или Get на python

Всем спасибо! Заработало, установил с помощью PIP



—————————————————————–
Изучаю и параллельно использую Python 2.7

Офлайн

#2 Авг. 7, 2012 10:22:29

Seganapa
От: Новороссийск
Зарегистрирован: 2012-07-31
Сообщения: 139
Репутация: +  0  -
Профиль   Отправить e-mail  

Пример Post или Get на python

Для пробы написал код авторизации на letitbit.net

import requests 
url = 'http://letitbit.net'                                
urlTo = 'http://letitbit.net/'
payload = {'act':'login','login':'h1480276@rtrtr.com','password':'2DPEND9i3jvs'}
headers = {
           'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0',
           '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',
          }
headers1 = {'content-type' : 'application/json',
           'Host' : 'letitbit.net',
           'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0',
           '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',
           'Referer'  :  'http://letitbit.net/',
           'Content-Type'  :  'application/x-www-form-urlencoded',
           }
r = requests.get (url, headers=headers)
b = requests.post (urlTo, allow_redirects=True, headers=headers1, data=payload)
print b.status_code
print b.headers
print b.text
print b.history
#print r.content

Возвращает не авторизованную страницу…
Гляньте, пожалуйста, в чем причина???



—————————————————————–
Изучаю и параллельно использую Python 2.7

Офлайн

#3 Авг. 7, 2012 10:51:20

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Пример Post или Get на python

Потому что нужно чтобы куки хранились, а для этого лучше использовать requests.Session.
Да и в headers1 у вас бред какой-то (host, content-type и connection requests и сам выставит).

import requests 
 
url = 'http://letitbit.net/'                                
 
payload = {'act':'login','login':'h1480276@rtrtr.com','password':'2DPEND9i3jvs'}
headers = {
   'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0',
   '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',
}
s = requests.Session(headers=headers)
b = s.post(url, allow_redirects=True, 
           headers={'Referer': 'http://letitbit.net/'}, data=payload)
...
Кстати, Referer при логине скорее всего не проверяется.
Дальше все запросы нужно делать через s (Session), в ней будут и хедеры и куки передаваться.

Отредактировано reclosedev (Авг. 7, 2012 10:55:18)

Офлайн

#4 Авг. 7, 2012 12:12:52

Seganapa
От: Новороссийск
Зарегистрирован: 2012-07-31
Сообщения: 139
Репутация: +  0  -
Профиль   Отправить e-mail  

Пример Post или Get на python

Спасибо! Получилось. Requests куки автоматом обрабатывает?



—————————————————————–
Изучаю и параллельно использую Python 2.7

Офлайн

#5 Авг. 7, 2012 12:58:18

Seganapa
От: Новороссийск
Зарегистрирован: 2012-07-31
Сообщения: 139
Репутация: +  0  -
Профиль   Отправить e-mail  

Пример Post или Get на python

Если мне нужно в Post запросе передать данные в формате Json? правильна ли будет такая запись?:

post = '{"name":name, "password":password, "passwordhash":"","autologin":false}'

где name и password переменные



—————————————————————–
Изучаю и параллельно использую Python 2.7

Офлайн

#6 Авг. 7, 2012 13:14:42

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Пример Post или Get на python

Seganapa
Requests куки автоматом обрабатывает?
Да, если использовать объект Session.
Seganapa
Если мне нужно в Post запросе передать данные в формате Json?
Если речь конкретно о letitbit то JSON там ни к чему.
Seganapa
правильна ли будет такая запись?:
Нет, переменные в строке сами себя не заменят волшебным образом.
Лучше воспользоваться json из стандартной библиотеки:
import json
post = json.dumps({"name": name, "password": password, "passwordhash": "", "autologin": False})
Можно и подстановку строк сделать, но не рекомендую (тут с экранированием и с кавычками нужно заморачиваться):
post = '{"name":%s "password":%s, "passwordhash":"","autologin":false}' % (name, password)

Отредактировано reclosedev (Авг. 7, 2012 13:16:29)

Офлайн

#7 Авг. 7, 2012 13:33:13

Seganapa
От: Новороссийск
Зарегистрирован: 2012-07-31
Сообщения: 139
Репутация: +  0  -
Профиль   Отправить e-mail  

Пример Post или Get на python

Просто я в php привык так делать:
$post = ‘json={“name”:“’ . $name . ‘”,“password”:“’ . $password . ‘”,“passwordhash”:“”,“autologin”:false}’;

Жаль на питоне так нельзя…



—————————————————————–
Изучаю и параллельно использую Python 2.7

Офлайн

#8 Авг. 7, 2012 13:53:27

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Пример Post или Get на python

Seganapa
Если мне нужно в Post запросе передать данные в формате Json? правильна ли будет такая запись?:

post = ‘{“name”:name, “password”:password, “passwordhash”:“”,“autologin”:false}’
Вот у меня вопрос: а это вообще валидный запрос? Я знаю только 2 типа поста: www/urlencoded и multipart.

Seganapa
Просто я в php привык так делать:
$post = ‘json={“name”:“’ . $name . ‘”,“password”:“’ . $password . ‘”,“passwordhash”:“”,“autologin”:false}’;

Жаль на питоне так нельзя…
Можно, reclosedev показал как. Но не нужно.

И вообще, тему в сети.

Отредактировано odnochlen (Авг. 7, 2012 13:53:51)

Офлайн

#9 Авг. 7, 2012 13:59:50

Seganapa
От: Новороссийск
Зарегистрирован: 2012-07-31
Сообщения: 139
Репутация: +  0  -
Профиль   Отправить e-mail  

Пример Post или Get на python

odnochlen
Вот у меня вопрос: а это вообще валидный запрос? Я знаю только 2 типа поста: www/urlencoded и multipart.

У меня сниффер вот что видит:


Блин, никак не могу получить страницу… Что-то не проходит. Заголовки все проверил, url правильный…
Походу данные в запрос не правильно формирую

Пожалуйста,гляньте кто-нибудь
Пробовал по всякому…

import requests 
#import json
headers = {
           'User-Agent'  :  'Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0',
           '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'
          }
 
url = 'http://ru.grepolis.com'
urlTo_start_page = 'http://ru.grepolis.com/start/index?action=login_from_start_page'
urlTo_start_page_next = 'http://ru.grepolis.com/start/index?action=fetch_news'
urlTo_login_to_game = 'http://ru.grepolis.com/start?action=login_to_game_world'                               
req = requests.Session(headers=headers)
onestep = req.get(url) 
name = 'Tartang'
password = '7TXzMQvUZt3qUqh'
#post = json.dumps({"name": name, "password": password, "passwordhash": "", "autologin": False})
post = 'json={"name":%s, "password":%s, "passwordhash":"","autologin":false}' % (name, password)
twostep = req.post(urlTo_start_page, data=post, allow_redirects=True, 
                   headers={'Referer': 'http://ru.grepolis.com/',
                            'X-Requested-With'  :  'XMLHttpRequest',
                            'Pragma'  :  'no-cache',
                            'Cache-Control'  :  'no-cache'
                            })
print twostep.text
print twostep.cookies



—————————————————————–
Изучаю и параллельно использую Python 2.7

Офлайн

#10 Авг. 7, 2012 14:28:20

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Пример Post или Get на python

Тут обычный www/urlencoded, поэтому вот так должно сработать:

json_arg = json.dumps({"name": name, "password": password, "passwordhash": "", "autologin": False})
twostep = req.post(urlTo_start_page, data={"json": json_arg}...
не пробовал.

А не получалось со строками, потому что кавычек нет.

Отредактировано reclosedev (Авг. 7, 2012 14:30:32)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version