Во-первых, я просто поделюсь некоторыми словами, которые я заметил на сайте Netflix в разделе Ограничения на использование :
Любое несанкционированное использование службы Netflix или ее содержимого приведет к аннулированию предоставленной нами ограниченной лицензии и приведет к аннулированию вашего членства.
Короче говоря, я не уверен, что ваш сценарий делает после этого, но некоторые действия могут поставить под угрозу ваши отношения с Netflix. Я не читал весь ToS, но вы должны.
Тем не менее, существует множество законных причин для очистки html-информации, и я делаю это постоянно. Итак, моя первая ставка с этой конкретной проблемой - вы используете неверную строку обнаружения ... Просто отправьте поддельное электронное письмо / пароль и распечатайте ответ ... Возможно, вы сделали предположение о том, как это выглядит, когда вы входите с браузер, но браузер отправляет информацию, которая получает дальнейшее развитие.
Хотелось бы предложить конкретную информацию о том, что делать дальше, но я бы предпочел не рисковать своими отношениями с 'flix, чтобы дать лучший ответ на вопрос ... поэтому я просто поделюсь несколькими наблюдениями, которые я почерпнул из скребков множество других сайтов, которые затрудняли использование веб-роботов ...
Сначала войдите в свою учетную запись с помощью Firefox и убедитесь, что надстройка Live HTTP Headers включена и находится в режиме захвата ... то, что вы увидите при входе в систему, это неоценимо для ваших усилий по написанию сценариев ... например, это было из сеанса, когда я вошел в систему ...
POST /Login HTTP/1.1
Host: signup.netflix.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://signup.netflix.com/Login?country=1&rdirfdc=true
--->Insert lots of private stuff here
Content-Type: application/x-www-form-urlencoded
Content-Length: 168
authURL=sOmELoNgTeXtStRiNg&nextpage=&SubmitButton=true&country=1&email=EmAiLAdDrEsS%40sOmEMaIlProvider.com&password=UnEnCoDeDpAsSwOrD
Обратите особое внимание на материал под полем «Длина содержимого» и все параметры, следующие за ним.
Теперь выйдите из системы и снова откройте страницу входа в систему ... есть вероятность, что некоторые из этих полей будут скрыты как информация о состоянии в тегах <input type="hidden">
... некоторые веб-приложения сохраняют состояние, заполняя ваши поля и затем они используют javascript для повторной отправки той же информации в POST вашего логина. Я обычно использую lxml для разбора получаемых страниц ... если вы попробуете это, имейте в виду, что lxml предпочитает utf-8, поэтому я включаю код, который автоматически конвертирует, когда видит другие кодировки ...
response = urlopen(req,data)
# info is from the HTTP headers... like server version
info = response.info().dict
# page is the HTML response
page = response.read()
encoding = chardet.detect(page)['encoding']
if encoding != 'utf-8':
page = page.decode(encoding, 'replace').encode('utf-8')
Кстати, Майкл Фурд имеет очень хороший справочник по urllib2 и многим другим проблемам.
Итак, в итоге :
- Используя ваш существующий скрипт, выведите результаты из известного поддельного логина, чтобы убедиться, что вы анализируете нужную информацию ... Я почти уверен вы ошиблись в предположении выше
- Также похоже, что вы не отправляете достаточно параметров в POST. Опыт подсказывает, что вам нужно установить
authURL
в дополнение к email
и password
... если возможно, я пытаюсь имитировать то, что посылает браузер ...
- Время от времени имеет значение, установили ли вы строку user-agent и ссылающуюся веб-страницу. Я всегда устанавливаю их, когда очищаю, чтобы не тратить время на отладку.
- Когда ничего не помогает, посмотрите информацию, сохраненную в куки, которые они отправляют
- Иногда сайты base64 кодируют данные отправки формы. Я не знаю, делает ли Netflix
- Некоторые веб-сайты очень защищают свою интеллектуальную собственность, и программное чтение / архивирование информации считается кражей их IP. Снова, прочитайте ToS ... Я не знаю, как Netflix просматривает то, что вы хотите сделать.
- Я предоставляю это в информационных целях и ни при каких обстоятельствах не одобряю и не оправдываю нарушение условий обслуживания Netflix ... и я не могу подтвердить, будет ли предложенная вами деятельность ... Я просто говорю, что она может :-) , Поговорите с адвокатом, который специализируется на электронном обнаружении, если вам нужно официальное решение. Ноги первые. Не ешьте желтый снег ... и т.д ...