Как войти на сайт с помощью модуля python «mechanize», используя cookie.txt, экспортированный расширением chrome «cookies.txt export»? - PullRequest
4 голосов
/ 28 сентября 2011

Я просмотрел похожие вопросы в stackoverflow, но, похоже, ни один из ответов не отвечает. Теперь у меня в руках cookies.txt, который экспортируется расширением chrome с именем «cookies.txt». Я могу выполнить команду "wget ​​--load-cookies cookies.txt www.example.com", чтобы загрузить веб-страницу с аутентифицированной учетной записью.

Однако я столкнулся с проблемой, когда попытался использовать этот файл в своем скрипте Python следующим образом:

import mechanize

cookie = 'cookies.txt'

cookiejar = mechanize.FileCookieJar(cookies.txt)

br = mechanize.Browser()

br.set_handle_robots(False)

br.set_cookiejar(cookiejar)

url = 'www.example.com'
response = br.open(url)
s = response.read()

f = open('test.html','w')
f.write(s)
f.close()

Я только получил веб-страницу без входа в мою учетную запись после выполнения этого скрипта. И если я изменю первые несколько строк кода на этот

import mechanize

cookie = 'cookies.txt'
cookiejar = mechanize.MozillaCookieJar()
cookiejar.load(cookie)

Я получил сообщение об ошибке «mechanize._clientcookie.LoadError: cookies.txt не похож на файл cookie формата Netscape» при выполнении сценария.

Я понятия не имею, как мне выполнить аутентификацию с помощью cookies.txt, если этот файл работает в команде wget.

Ответы [ 3 ]

2 голосов
/ 02 июня 2012

Я получал ту же ошибку, пока не добавил ее в начало файла cookie, и теперь он работает.

# Netscape HTTP Cookie File
# http://www.netscape.com/newsref/std/cookie_spec.html
# This is a generated file!  Do not edit.
2 голосов
/ 08 января 2013

Согласно исходному механизированному коду, метод загрузки класса MozillaCookieJar будет сначала искать регулярное выражение «# (Netscape)? HTTP Cookie File», поэтому вы можете вставить эту строку в начало экспортируемого cookie.txt:

# Netscape HTTP Cookie File
0 голосов
/ 28 сентября 2011

Используйте модуль cookielib для обработки файлов cookie.

http://docs.python.org/library/cookielib.html

В частности, вам необходимо прочитать о том, как использовать FileCookieJar.load ()

Это должно помочь вам в этом.

...