Ну, вот в чем дело, я написал скрипт на Python, который подключается к моей веб-странице работ и загружает мою последнюю зарплату.Он отлично работает в Windows, но когда я перемещаю этот скрипт на мой сервер, на котором запущен Debian, он не перенаправляет мимо начальной страницы.Есть ли разница между платформами?Поиск по часам не принес мне никакой полезной информации.Я удостоверился, что обе системы и работают с одной и той же версией Mechanize, но версии Python отличаются (РЕДАКТИРОВАТЬ: теперь обе идентичны), хотя немного отличаются.
Both systems are running identical versions of Python and mechanize.
# >> python -V
Python 2.7.1
#mechanize >> print(mechanize.__version__)
(0, 2, 4, None, None)
Теперь я создал раздетуюСкриптовый тестовый скрипт только для тестирования.Это так, чтобы я мог легко сравнить результаты.В Windows скрипт вернет последнюю страницу, содержащую список всех доступных чеков, в то время как в Linux он напечатает только начальную страницу, которая должна быть перенаправлена на страницу входа.Мне кажется, что механизация под Linux либо вообще не перенаправляет, либо просто не устанавливает cookie, который необходим для продолжения.
Есть идеи?предложения?Я в основном спрашиваю, есть ли разница в механизации между Windows и Linux.Так как содержимое пакета из того же источника, я думаю, нет, но тогда что вызывает эту проблему?
Вот код, который я использую для тестирования.Очевидно, я пропустил правильное имя пользователя и пароль:)
import mechanize;
import urllib;
#constants
URL_OPEN = "https://ep.upsers.com/ep-s/UPSRegistration/UPSLogin";#set a cookie
URL_SECURE = "https://ep.upsers.com/gems-secure/epay_eng.html";
URL_PAYCHECK = "https://ep.upsers.com/gems-secure/psc/hrprod/EMPLOYEE/HRMS/c/M_UPS_MENU.VW_PYCHK_M.GBL?Page=PYCHKDAT_M&Action=U";#lists paychecks
VIEWALL = "#ICViewAll";
def testConnection(username, password):
success = "no connection: ";
try:
#get a cookie to use later
mechanize.HTTPSHandler();
request1 = mechanize.Request(URL_OPEN);
response1 = mechanize.urlopen(request1);
#attempt our login
postdata = {"user": username,"password": password};
post = urllib.urlencode(postdata);
headers = {"User-agent" : "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)"};
request2 = mechanize.Request(URL_OPEN, post, headers);
response2 = mechanize.urlopen(request2);
#navigate to paycheck page
request3 = mechanize.Request(URL_PAYCHECK);
response3 = mechanize.urlopen(request3);
success = response3.read();
except Exception as ex:
success += str(ex);
print(success);
#end testConnection
testConnection('USERNAME', 'PASSWORD')
Первоначально я думал, что может потребоваться изменить пользовательский агент, но в результатах нет изменений.
ПРИМЕЧАНИЕ:Теперь обе версии Python и Mechanize идентичны.ПРИМЕЧАНИЕ. Я заметил, что при проверке заголовков при каждом запросе cookie не устанавливается / хранится в Linux, а в Windows - это нормально.