2014-11-05 3 views
0

Мне нужно зайти на сайт с помощью python, но на странице входа требуется файл cookie sessionID в заголовке запроса. Использование инструментов для разработчиков Google вместе с WebClient (hurl.it), я был в состоянии определить необходимый формат заголовка запроса, который является приемлемым вебсервером:Python + cookie + запросы --- Не удается открыть ссылку

Accept: */* 
Accept-Encoding: gzip, deflate 
Content-Length: 85 
Content-Type: application/x-www-form-urlencoded 
Cookie: www_amsterdam-dance-event_nl_session=l9Abno8a1UyHPof%2BOyVqk8BxHjesGMi78z6Ot0ZXCCbI%2BxVKqjm30ALTfW%2FR7yKcDaqfEtFOyysTrjIeU8lU5ylv1TOlW6GLHY8jDfKKWSULKsUUJiTh92DbvkuYBuE6zt%2FeLs44lDna6Nz3uMCOaSARN7gCpoSz0TOcFaes8Hk9q6FikP1F9e%2B%2FsMwfUP0RTA0Rc5gJFyJPxHXNCdn%2BT49mhHYnzoIWVlxGHhlaEkZX1PPsYx1xq0BCgpb0WnPViuiZiBnQY2nz%2BBO4Uur0WPNfpSSWZg5Qxz79nYeChlRe16JhYjVOdaiUhnfEvp1jM7h%2BCdR6cUeatd7HGbftRCjINDrVuPeyB5ltVihStmzKEjOmWetI0xNuaNswsPIKKuo%2BV6JFNfdLcA6h3iy1K8o%2FA49tKGMP2rmGe4e5Jec%3Df395212364d1ffc80cf95ebf5abf3b40f9dc6441; 
User-Agent: runscope/0.1 

email=******%40beatswitch.com&login_token=545a46230b291&password=*****&submission= 

Я произвел следующий запрос с помощью Python запрашивает модуль :

POST /my-ade/login/ HTTP/1.1 
Host: www.amsterdam-dance-event.nl 
Content-Length: 85 
Accept-Encoding: gzip,deflate 
Accept: */* 
User-Agent: runscope/0.1 
Connection: keep-alive 
Cookie: www_amsterdam-dance-event_nl_session=l9Abno8a1UyHPof%2BOyVqk8BxHjesGMi78z6Ot0ZXCCbI%2BxVKqjm30ALTfW%2FR7yKcDaqfEtFOyysTrjIeU8lU5ylv1TOlW6GLHY8jDfKKWSULKsUUJiTh92DbvkuYBuE6zt%2FeLs44lDna6Nz3uMCOaSARN7gCpoSz0TOcFaes8Hk9q6FikP1F9e%2B%2FsMwfUP0RTA0Rc5gJFyJPxHXNCdn%2BT49mhHYnzoIWVlxGHhlaEkZX1PPsYx1xq0BCgpb0WnPViuiZiBnQY2nz%2BBO4Uur0WPNfpSSWZg5Qxz79nYeChlRe16JhYjVOdaiUhnfEvp1jM7h%2BCdR6cUeatd7HGbftRCjINDrVuPeyB5ltVihStmzKEjOmWetI0xNuaNswsPIKKuo%2BV6JFNfdLcA6h3iy1K8o%2FA49tKGMP2rmGe4e5Jec%3Df395212364d1ffc80cf95ebf5abf3b40f9dc6441; 
Content-Type: application/x-www-form-urlencoded 

login_token=545a46230b291&password=*****&email=******%40beatswitch.com&submission=' 

Когда я загружаю прежний заголовок запроса с hurl.it, все работает отлично и веб-сервер позволяет мне войти, но попробовав почти такой же запрос с теми же параметрами, проваливается в питона. При использовании запроса python веб-сервер представляет страницу с ошибкой. Любая помощь будет высоко оценен. Мне нужно решение отчаянно.

EDIT: Вот код:

#Open the login page to get sessionID and login_token 
loginURL = "https://www.amsterdam-dance-event.nl/my-ade/login/" 
loginReq = session.get(loginURL) 
loginSoup = BeautifulSoup(loginReq.text) 
loginToken = loginSoup.find('input',attrs={'name':'login_token'})['value'] 
sessionID= loginReq.cookies['www_amsterdam-dance-event_nl_session'] 
cookie = 'www_amsterdam-dance-event_nl_session='+sessionID 

#Construct the header and post it to the webserver 
headers = {'Content-Length':'85','Accept':'*/*','User-Agent':' runscope/0.1','Content-Type':'application/x-www-form-urlencoded','Accept-Encoding':'gzip,deflate','Cookie':cookie} 
payload = {'email':'*******@beatswitch.com','password':'********','login_token':loginToken,'submission':''} 
loggedinReq = session.post(loginURL,headers=headers,data=payload) 
+0

добавить код питона в вашем вопросе –

+1

@Faisal, если это та же сессия повсюду, то почему бы вам хотите добавить к нему куки. Разве они уже не были? Возможно, вы запустите код, удалив указанные пользователем файлы cookie из заголовков и сообщите мне, что происходит? –

+0

@ Md.Mohsin У меня создалось впечатление, что файлы cookie и заголовки должны обрабатываться вручную. С вашей подсказкой я сначала удалил файлы cookie, но это не сработало. Затем я полностью удалил заголовки и разрешил запросы обрабатывать заголовки и файлы cookie и его РАБОТА СЕЙЧАС !! Но формат заголовка по-прежнему похож на старый. Не могу догадаться, почему один из них работает, а другой - нет. Но заработал он, тем не менее .. Большое спасибо за ваше время! – Faisal

ответ

0

Я нашел решение, благодаря Md. Mohsin. Я пытался обрабатывать заголовки запросов и файлы cookie вручную, в то время как модуль запросов может обрабатывать их сам по себе. Так я извлекал следующую строку из кода, и пусть просит взять полный контроль, и все работало как задумано:

headers = {'Content-Length':'85','Accept':'*/*','User-Agent':' runscope/0.1','Content-Type':'application/x-www-form-urlencoded','Accept-Encoding':'gzip,deflate','Cookie':cookie} 
Смежные вопросы