2015-09-01 6 views
1

Поскольку официального официального Netflix API нет, я пытаюсь переделать некоторые вещи самостоятельно. Но я как бы застрял в логине.Репликация Netflix для входа в систему и генерация cookie

Что я делаю:

  1. запрос GET на https://www.netflix.com/Login
  2. переадресацию, чтобы в конечном итоге на что-то вроде/Вход локали = ан-DE
  3. Извлечение значения authURL (требуется для Войти ПОСТ позже)
  4. запрос GET на https://assets.nflxext.com/us/ffe/siteui/logging/clientNotifications.min.20150626.js
  5. [Failed] Создание и установить «ХЛ» куки от содержания этого JavaScript
  6. запрос POST на https://www.netflix.com/Login?locale=en-DE, используя следующий формат тела: authURL=EXTRACTED_AUTH_URL&email=YOUR_EMAIL&password=YOUR_PASSWORD&RememberMe=on

Я думаю Логин не удается, потому что я не смог получить данные для печенья «ХЛ». Для каждого запроса я использовал те же самые заголовки запросов, что и Internet Explorer.

Так что я ищу способ получить данные из этого JavaScript. Возможно, с помощью регулярного выражения? Но этот JavaScript настолько миниатюрный и нечитаемый. :/Некоторые переменные, такие как appId и sessionId, по-прежнему доступны для чтения, но все функции и другие вещи не имеют других имен, кроме a, b, c. Я попытался использовать отладчик, чтобы пройти через этот код, но это просто способ для моего мозга.

Вот некоторые дополнительные замечания:

  • Я не хочу войти на сайт Netflix с помощью моего браузера.
  • Я хочу программно обращаться к Netflix. (Вот почему я задал этот вопрос в Stackoverflow).
  • Я не хочу писать приложение JavaScript, и я никогда не говорил, что хочу, на самом деле я даже не знаю, какой язык программирования я буду использовать для его реализации.
  • Я не хочу писать браузер.
  • Я потратил несколько часов на регистрацию/обратное проектирование запросов на вход. (Я использовал инструменты разработчика Fiddler и IE.)
  • Я не планирую делать что-либо незаконное с этим, это просто частный проект.
+0

Почему бы вам не просто войти на сайт? – Ajaypayne

+0

Потому что я хочу сделать это программно. – Forivin

+0

В чем преимущество этого? – Ajaypayne

ответ

1

Проверить запросы на вкладке сети, копировать их с помощью postman или что-то подобное, чтобы увидеть, если они работают в любом месте или, если вам нужно иметь session cookie, а затем написать скрипт на выбранном языке, чтобы обрабатывать сообщения, которые вы будете использовать.

Не давая нам больше информации, вы не можете надеяться, что люди смогут помочь в этом.

+1

Я уже проверял запросы (очевидно) и пытался их воспроизвести. Но я не смог воспроизвести созданный клиентом cookie. – Forivin

1

Если вы используете .NET, возможно, более простой подход заключается в использовании элемента управления WebBrowser.

Просто укажите на http://www.netflix.com. Затем вы можете установить имя пользователя/пароль и имитировать щелчок кнопки отправки и извлечь данные со своих страниц с помощью DOM. Вам не придется беспокоиться об извлечении и управлении файлом cookie и т. Д., Поскольку по существу он позаботился.

+0

Я уже думал об этом, но это создало бы массу ненужных накладных расходов и, возможно, даже не сработало, поскольку netflix работает только в браузерах, которые поддерживают drm, поэтому на WinXP вам будет совершенно не повезло. Кроме того, это ограничило бы меня Windows в целом. – Forivin

+0

Правда есть некоторые накладные расходы. однако не DRM только удар, когда вы начинаете потоковое? вне окон есть http://www.mono-project.com/docs/gui/winforms/webbrowser/ - не говорю, что это здорово, но, возможно, обходное решение ... В общем, мне нравится сначала думать, что работает, а потом беспокоиться о переносимости и т.д. позже. – gregswiss

2

То, что вы ищете, называется Web Scraping/Web Crawling.

Вы можете сделать это с помощью компонента WebBrowser из .NET, как gregswiss указал, но вы также можете сделать это с:

Python: Scrapy (Самый популярный веб-скребок, также вы найдете много учебных пособий)

Javascript: Casper JS (которым полагается на Phantom JS обезглавленный веб-браузер)

Java: Jaunt (это мой любимый, поставляется с соответствующими примерами), или напишите свой собственный веб-скребок, используя org.apache.commons.httpclient.

PHP: http://www.programminghelp.com/php/basic-web-scraping-regex-php/ http://www.jacobward.co.uk/web-scraping-with-php-curl-part-1/

Вот пример для входа в систему с прогулкой:

try{ 
    UserAgent userAgent = new UserAgent(); 
    userAgent.visit("http://jaunt-api.com/examples/login.htm"); 

    userAgent.doc.fillout("Username:", "tom");  //fill out the component labelled 'Username:' with "tom" 
    userAgent.doc.fillout("Password:", "secret"); //fill out the component labelled 'Password:' with "secret" 
    userAgent.doc.choose(Label.RIGHT, "Remember me");//choose the component right-labelled 'Remember me'. 
    userAgent.doc.submit();       //submit the form 
    System.out.println(userAgent.getLocation());  //print the current location (url) 
} 
catch(JauntException e){ 
    System.err.println(e); 
} 

Вы можете найти больше пример здесь: http://jaunt-api.com/jaunt-tutorial.htm

+0

Но было бы намного чище и эффективнее, если бы я мог просто использовать http-библиотеку, такую ​​как curl для этого. Я имею в виду все, что мешает мне делать это, это единственный куки-файл из того, что я могу сказать. – Forivin

+0

Я решил, что это создает слишком много накладных расходов и не позволяет мне использовать определенные языки программирования, в которых отсутствует такая библиотека скребков. – Forivin

+0

Скребок будет просто убивать много времени, делая обратную инженерию. Лучше просто использовать существующий веб-компонент (например, UIWebView для iOS или аналогичный). –

2

Там существует целый ряд подходов что вы можете использовать для работы Netflix. Вы можете создать собственный API, который не так уж и трудный. Если вы намерены использовать его в своих целях, это будет излишним, но если вы намерены иметь хотя бы некоторых пользователей, это возможно. Главное, что вам нужно запомнить, - это то, что обычно требуется первый вызов (для сохранения/получения файла cookie). После этого вы можете войти в систему, а затем отобразить контент для пользователя или создать собственный дизайн из выбранных данных. Ваши соответствующие варианты:

  • Вы можете создавать собственные приложения (например, Android, iOS, Windows Phone) и использовать встроенные компоненты браузера, которые имеют все упомянутые платформы.
  • Создайте backend API, который обрабатывает один или несколько логинов и совместно использует логин для многих пользователей (если это позволяют условия использования). Пользователи могут находиться в браузере или на родном приложении.
  • Браузер только для вашего личного использования (или используется другими пользователями, используя свой собственный логин).

Я использую комбинацию первого и второго вариантов в моем проекте. Однако мой проект не связан ни с чем рядом с вашим, за исключением того, что он использует файлы cookie, login и API. Удачи!

Смежные вопросы