2014-11-19 3 views
0

Если я попытаюсь войти в свою учетную запись и не увенчаюсь успехом, тогда у меня будет фраза try again на странице источника URL. Так что я пытался написать питон скрипт для входа на мой счет и делать вещи:данные python post с запросами в python

Update

token=...#by xpath 
session=requests.Session('http://example.com') 
response=session.get('http://example.com') 
cook=session.cookies 
postdata={'token':token, 'arg1':'', 'arg2':'', 'name[user]': user, 'name[password]':password, 'arg3': 'Sign in'} 
postresp=requests.post(url='http://example.com/sth', cookies=cook, data=post_data) 
print postresp.content 

Есть ли что-то не так с PostData или т.п.?

Я также сидел с печеньем.

+2

Возможно, некоторые печенья необходимо. – laike9m

+0

@ laike9m Хорошо ... Вы имеете в виду, что я не ошибаюсь, не так ли? – MLSC

+0

Нет никакого правильного или неправильного действия, просто работайте или не работайте, вы должны продолжать попытки, прежде чем он начнет работать. – laike9m

ответ

1

Вы не хотите, чтобы показать URL - и его трудно попасть в глаза быков без него :-)

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

Please note the following points: -try to use a user agent in the headers -Token needs to be fetched after calling the url (In the following case its the 5th line)

session=requests.Session() 
headers={"User-Agent":"Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36"} 
session.headers.update(headers) 
response=session.get('http://example.com').content #I added this line 
tree=html.fromstring(cont)       #and this line 
token=tree.xpath('//*[@class="blah blah blah"]') 
#cook=session.cookies -- You don't need this if you are continuing with the same session 
postdata={'token':token, 'arg1':'', 'arg2':'', 'name[user]': user, 'name[password]':password, 'arg3': 'Sign in'} 
postresp=session.post(url='http://example.com/sth', data=post_data) # use session.post instead of making a completely new request 
print postresp.content 

Также, пожалуйста, проверьте, есть ли конкретные content-type если да, то пожалуйста, добавьте его к заголовкам

Надежда, что помогает :-)

+0

Thaaaaaaaaxxxxxxxxxxxxx – MLSC

+1

@MortezaLSC 'session.get' должен использовать один и тот же сеанс по всему - на веб-сайте могут использоваться определенные токены для каждой сессии. Поэтому 'session.get' и' session.post' используют один и тот же сеанс. Нам не нужно переносить куки. И даже избегает изменения токена. С другой стороны 'request.get' открывает новую одноразовую сессию altogther - так что все файлы cookie и токен меняются здесь –

+0

@MortezaLSC :-) Добро пожаловать, рад, что смогу помочь :-) –

1

Если бы я собирался сделать это, первый шаг открыт Chrome (или FF, если вам нравится) и отправить запрос

Нажмите F12 enter image description here

Нажмите, что конкретный запрос, здесь я просто обновите эту страницу, для вас это запрос на вход enter image description here

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

Удачи.

+0

Спасибо ... Я сделал это раньше ... и там, где параметры мне приходилось публиковать ... Но я не знаю, почему нет установочной связи – MLSC

+0

@MortezaLSC Это возможно. Некоторым веб-сайтам не нравятся люди, делающие такие вещи ... – laike9m

+0

pardon for delay ... Я проверил его, и я сидел в кокетливости. Поэтому, пожалуйста, см. Обновление ... – MLSC

Смежные вопросы