cookieJar = cookielib.CookieJar()
Просто бальзам на душу, и всё достаточно логично и просто, и к тому же раньше имел опыт с работой cURL на PHP.
Посмотрел все примеры, что шли вместе с библиотекой, честно, использовал гугл, но не нашёл ответа на вопрос.
Я авторизуюсь на некий сайт, http://example.com, посылаю POST-запрос с помощью курла и проверяю на наличие определенного тега на сайте:
... def connect(hash): curl.setopt(pycurl.URL, 'http://example.com/') curl.setopt(pycurl.WRITEFUNCTION, data.write) curl.setopt(pycurl.FOLLOWLOCATION, 1) curl.setopt(pycurl.COOKIEJAR, "/tmp/cookie.txt") curl.setopt(pycurl.COOKIEFILE, "/tmp/cookie.txt") curl.setopt(pycurl.POSTFIELDS, 'auth_token='+hash+'&login='+login+'&password='+password) curl.setopt(pycurl.POST, 1) curl.perform() if re.search('href="/logout"', data.getvalue()): print 'Auth is successful!' ...
После того как я произвёл авторизацию, мне необходимо зайти на определённую страницу:
http://example.com/somebody
и нажать на ней определённую кнопку (кнопка выполняет java-script, типо like)
Включаю сниффер, нажимаю на кнопку, вижу POST-запрос по ссылке:
http://example.com/clicks/somebody/020304050/add
020304050 - это какая-то запись, по которой мы кликнули
В POST-дата один параметр - auth_token, который необходим и для авторизации, я его спарсил и он у меня hash-ом назван.
В headers-куча параметров, что-то вроде :
'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0', 'Accept: text/javascript', 'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3', 'Accept-Encoding: gzip, deflate', 'Connection: keep-alive', 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8', 'X-Requested-With: XMLHttpRequest', 'Referer: http://example.com/somebody', 'Content-Length: 69', 'Cookie:' ??????? 'Pragma: no-cache', 'Cache-Control: no-cache'
При авторизации просто - curl.setopt(pycurl.COOKIEFILE, “/tmp/cookie.txt”) - показал паспорт и все.
Вот мой код( не рабочий, т.к не знаю как в хидер куку впихнуть):
data.truncate(0) # чищу data = StringIO.StringIO() curl.setopt(pycurl.URL, 'http://example.com/clicks/somebody/020304050/add') curl.setopt(pycurl.WRITEFUNCTION, data.write) curl.setopt(pycurl.COOKIEFILE, "/tmp/cookie.txt") curl.setopt(pycurl.HTTPHEADER, ['User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0', 'Accept: text/javascript', 'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3', 'Accept-Encoding: gzip, deflate', 'Connection: keep-alive', 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8', 'X-Requested-With: XMLHttpRequest', 'Referer: http://example.com/somebody', 'Content-Length: 69', 'Cookie:', 'Pragma: no-cache', 'Cache-Control: no-cache']) curl.setopt(pycurl.POSTFIELDS, 'auth_token='+hash) curl.setopt(pycurl.POST, 1) curl.perform() print data.getvalue()