механизировать: печеньки перепутаны? - PullRequest
2 голосов
/ 14 февраля 2012

Я использую Mechanize для посещения одного и того же сайта с разных прокси.На сайте есть страница входа.У меня есть 5 прокси и 5 разных логинов, по одному для каждого прокси.

Если я просто запускаю свой сценарий с одним прокси и одним входом в систему, каждый из них работает нормально.Однако, если я запускаю два или более прокси / входа одновременно, то я получаю ошибки (с веб-сайта), такие как «либо истек срок сеанса, либо файлы cookie не включены».Это происходит независимо от того, запускаю ли я 5 экземпляров из одного и того же сценария (один и тот же процесс) или из разных сценариев (разные процессы).

Что может заставить это работать индивидуально, но не все сразу?

1 Ответ

2 голосов
/ 14 февраля 2012

Это связано с тем, что по умолчанию Mechanize автоматически создает общую «банку печенья». Для более продвинутых опций обработки файлов cookie вам нужно будет создать свой собственный файл cookie для каждого из сеансов сценария.

Мне пришлось использовать специальный файл cookie в прошлом проекте, чтобы перемещать файлы cookie из одного сеанса в другой. Конечный результат один и тот же, каждый экземпляр вашего сценария будет иметь свой собственный уникальный файл для хранения своих файлов cookie, поэтому вы сами должны управлять файлами cookie и знать, что они не запутались.

>>>> import mechanize

>>>> cj1 = mechanize.CookieJar()
>>>> cj2 = mechanize.CookieJar()
>>>> mech1 = mechanize.OpenerFactory().build_opener(mechanize.HTTPCookieProcessor(cj1))
>>>> mech2 = mechanize.OpenerFactory().build_opener(mechanize.HTTPCookieProcessor(cj2))

>>>> request = mechanize.Request('http://example.com') # testing shows they can share a request

>>>> response1 = mech1.open(request)
>>>> response2 = mech2.open(request)

>>>> print cj1
<mechanize._clientcookie.CookieJar[<Cookie JSESSIONID=54FBB2BE99E4CFDA8F8386F52FCF59C3>]>
>>>> print cj2
<mechanize._clientcookie.CookieJar[<Cookie JSESSIONID=350C0D544CDAD344A1272DA8D7B016B0>]>

В этом примере, который я протестировал, вы можете увидеть два механизированных объекта, каждый со своим независимым файлом cookie.

...