PHP Curl код для urlfetch в Python - нужна помощь - PullRequest
0 голосов
/ 23 августа 2011

Это мой PHP-код с Curl. Мне нужно сделать ту же функцию, используя urlfetch в GAE Python. Как передать все эти параметры в urlfetch. Пожалуйста, помогите мне.

    $curl = curl_init();
    $timeout = 30;

// Logining to my TNT 
    curl_setopt ($curl, CURLOPT_URL, "https://my.tnt.com/myTNT/login/LoginInitial.do?cmd=1&navigation=1");
    curl_setopt ($curl, CURLOPT_POST, 1);
    curl_setopt ($curl, CURLOPT_POSTFIELDS, "userid=aaaa@bb.com&password=1234qwe");
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt ($curl, CURLOPT_COOKIESESSION, 1);
    curl_setopt ($curl, CURLOPT_COOKIEFILE, "userid=; password=; JSESSIONID=E1FC9A6D18002370BD4AF7DDBBA617A0; BIGipServermy_tnt_com_pool=2636720036.20480.0000");
    curl_setopt ($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt ($curl, CURLOPT_MAXREDIRS, 20);
    curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:5.0.1) Gecko/20100101 Firefox/5.0.1");
    curl_setopt ($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt ($curl, CURLOPT_REFERER, "https://my.tnt.com/myTNT/login/LoginInitial.do");
    $text = curl_exec($curl);
    $pos = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL);

Это мой код Python.

from google.appengine.api import urlfetch
import urllib

class MainHandler(webapp.RequestHandler):
  def get(self):
     url = "https://my.tnt.com/myTNT/login/LoginInitial.do?cmd=1&navigation=1"
     form_fields = {
         "userid": "aaaa@bb.com",
         "password": "1234qwe",
     }
     form_data = urllib.urlencode(form_fields)
     result = urlfetch.fetch(url=url,
                    payload=form_data,                        
                    method=urlfetch.POST,
                    validate_certificate='TRUE',
                    headers={'Host': 'my.tnt.com',
                                    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                                    'Accept-Language': 'en-us,en;q=0.5',
                                    'Accept-Encoding': 'gzip, deflate',
                                    'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
                                    'Keep-Alive': '115',
                                    'Connection': 'keep-alive',
                                    'Referer': 'https://my.tnt.com/myTNT/login/LoginInitial.do',
                                    'Cookie': 'userid=; password=; JSESSIONID=E1FC9A6D18002370BD4AF7DDBBA617A0; BIGipServermy_tnt_com_pool=2636720036.20480.0000',
                                    'Content-Type': 'application/x-www-form-urlencoded',
                                    'Content-Length': '45',
                                   }
                      )
    self.response.out.write(result.final_url)

Я пытаюсь получить доступ к веб-странице MyTNT. Итак, сначала мне нужно войти на эту страницу. Вышеприведенный код предназначен для входа на сайт mytnt. Когда я запускаю код PHP, он перенаправляется на домашнюю страницу mytnt (https://my.tnt.com/myTNT/landing/landingPage.do). Но когда я запустил файл python, он перенаправлял на ту же страницу входа. Логин был неудачным, когда я выполняю файл python, используя urlfetch.

1 Ответ

0 голосов
/ 23 августа 2011

Я подозреваю, что ваш php-код использует «cookie jar», как то, что доступно в библиотеке mechanize .

Раньше я использовал механизацию для базового просмотра веб-сайтов, но не для входа в систему, поэтому я не могу сказать на 100%, что это будет работать для вас, но я думаю, что это ваш лучший шанс.

...