Хочу разобраться с передачей запросов с помощью питона. Решил написать бота для простой игры - http://barbars.ru но столкнулся с проблемой. При авторизации пост запросом отправляются данные и в ответ в куки записуют логин, айди и сесию. Попытался это написать на питоне. Запрос в браузере на первом, а консольный вывод программы вот:
loginForm_hf_0=&login=MyTestUser&password=qwerty123&%3Asubmit=%D0%92%D0%BE%D0%B9%D1%82%D0%B8 ####################### {'Origin': 'http://barbars.ru', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'User-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/536.30.1 (KHTML, like Gecko) Version/6.0.5 Safari/536.30.1', 'Connection': 'Keep-Alive', 'Referer': 'http://barbars.ru/login', 'Content-type': 'application/x-www-form-urlencoded'} ####################### Server: nginx/1.2.1 Date: Mon, 01 Jul 2013 23:20:58 GMT Content-Type: text/html;charset=UTF-8 Content-Length: 3216 Connection: close Set-Cookie: JSESSIONID=6E8E40AAB5408C3F14B866F24EBB749C; Path=/ Pragma: no-cache Cache-Control: no-cache, max-age=0, must-revalidate Content-Language: en-US ####################### <cookielib.CookieJar[<Cookie JSESSIONID=6E8E40AAB5408C3F14B866F24EBB749C for barbars.ru/>]>
Сам код:
#!/usr/bin/env python # -*- coding: utf-8 -*- import httplib, cookielib, urllib, urllib2 cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) headers = { 'Origin': 'http://barbars.ru', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/536.30.1 (KHTML, like Gecko) Version/6.0.5 Safari/536.30.1', 'Content-Type': 'application/x-www-form-urlencoded', 'Connection': 'Keep-Alive', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Referer': 'http://barbars.ru/login' } data = { 'login':'MyTestUser', 'password':'qwerty123', 'loginForm_hf_0':'', ':submit':'Войти' } #POST /login/wicket:interface/:13:loginForm::IFormSubmitListener:: HTTP/1.1 data = urllib.urlencode(data) req = urllib2.Request('http://barbars.ru/login', data, headers) response = opener.open(req) print data print "#######################" print req.headers print "#######################" print response.headers print "#######################" print cj
П.П.С. Логин и пароль игрока указаны реальные)