2009-09-03 1 views
3

Я хочу сделать некоторые веб-скребки с GAE. (Бесконечный информационный портал студенческого городка, fyi). Эта услуга требует, чтобы вы заходили на сайт. У меня был код, который работал с использованием механизации в обычном питоне. Когда я узнал, что не могу использовать механизацию в Google App Engine, я закончил использование urllib2 + ClientForm. Я не мог заставить его войти на сервер, поэтому после нескольких часов работы с обработкой файлов cookie я запускал тот же самый код в обычном интерпретаторе python, и он работал. Я нашел файл журнала и увидел массу сообщений об удалении заголовка «хозяина» в моем запросе ... Я нашел исходный файл в Google Code, а заголовок хоста был в «ненадежном» списке и удален из всех запросов код пользователя.Скребок веб-экрана с Google App Engine - код работает в интерпретаторе python, но не в GAE

Очевидно, что GAE вырезает заголовок хоста, который требуется I.C. чтобы определить, в какую школьную систему вы входите в систему, поэтому она появилась, как будто я не мог войти в систему.

Как мне решить эту проблему? Я не могу указать что-либо еще в моем подделке на целевой сайт. Почему это должно быть «дырой в безопасности» в первую очередь?

ответ

2

App Engine не strip out Заголовок хоста: он заставляет его быть точным значением, основанным на запросе URI. Если предположить, что абсолютное, сервер Ури даже не позволил рассмотреть заголовок хоста в любом случае, за RFC2616:

  1. Если Request-URI является absoluteURI, хозяин часть Request-URI. Любое значение поля заголовка узла в запросе ДОЛЖНО быть проигнорировано.

... так что я подозреваю, что вы ошибочный диагноз причину вашей проблемы. Попробуйте направлять запрос на «фиктивный» сервер, который вы контролируете (например, еще одно очень простое приложение для вашего приложения), чтобы вы могли просматривать все заголовки и тело запроса, как оно поступает из вашего приложения GAE, а также, как это происходит от вашего «обычного интерпретатора python». Что вы наблюдаете именно так?

+2

http://webappecho.appspot.com/ является хорошим испытанием для этого. –

+0

хороший указатель, спасибо Ник! –

+0

Спасибо! Я попробую! –