Представьте, что вы работаете в Wall Street Journal и хотите прочитать эту статью:

На мой взгляд, это важно, но как только вы прочитаете несколько слов, вы окажетесь заблокированы этим платным доступом:

И вы бы подписались, но 29,99 доллара в месяц - это немного круто для базовой информации о коронавирусе и новостей.

Итак, сегодня мы поговорим об обходе платного доступа по подписке с помощью JavaScript.

Если вы не готовы тратить более 100 часов на кодирование полнофункционального расширения Chrome, чтобы сделать это, сэкономьте время, просто добавив это бесплатное расширение под названием Hover. Он был удален из Интернет-магазина Chrome, но вы все равно можете полностью установить его из Github (просто прокрутите вниз до инструкций по установке :)).

Он обходит платный доступ практически на всех сайтах, включая Medium, Business Insider, New York Times, Bloomberg, Quora и т. Д., И на данный момент является наиболее эффективным методом обхода платного доступа на рынке.

Это расширение в действии на Medium:

Мы рассмотрим, как работает платный доступ, три основных способа их обхода и код для этого.

Это используется только в образовательных целях. Пожалуйста, никогда не нарушайте Условия использования любого веб-сайта.

Так как же работает платный доступ?

Платный доступ - это просто HTML-элемент, который блокирует контент, стоящий за ним:

Оно появляется, когда вы не подписаны на сайт, на котором находитесь, и у вас закончились бесплатные чтения (обычно 5–10 на всю жизнь). Вы не можете щелкнуть за его пределами или пролистать статью. Для многих людей, которые пытались это прочитать, в этой статье, вероятно, был платный доступ.

Некоторые источники рекомендуют вам просто удалить платный доступ в браузере: Щелкните правой кнопкой мыши Paywall- ›Проверить элемент -› Щелкните по основному блоку Paywall - ›Удалить (используя клавишу удаления). Хотя это действительно технически избавляет от платного доступа, он не работает на 99% веб-сайтов по двум причинам. Во-первых, статья обычно не загружается дальше того, что отображается за платным доступом, поэтому вы практически можете прочитать только заголовок и первую строку статьи. Во-вторых, сайты могут определять, когда платный доступ удаляется, поэтому даже если вам удалось прокрутить вниз, платный доступ снова появится в течение нескольких секунд. Как жаль.

Но не волнуйтесь, я здесь ради этого. После небольшого исследования и проверки платного доступа на реальных сайтах, чтобы увидеть, как они работают, я нашел три основных эффективных способа обойти практически любой платный доступ.

Три основных способа обхода платного доступа:

  1. Перенаправление реферера заголовка
  2. Подмена нашего компьютера под Google Adbot
  3. Отключение всех файлов cookie

Для обхода платного доступа используется один из этих трех методов, в зависимости от сайта. Например, платный доступ Medium можно обойти, только перенаправив ссылку в заголовок на Twitter. С другой стороны, платный доступ New York Times можно обойти только путем блокировки файлов cookie. Давайте обсудим каждый из этих методов.

Перенаправление реферера заголовка

Многие сайты, требующие подписки, позволяют людям читать свои статьи, если они приходят с сайта социальной сети, чтобы привлечь новых пользователей. Например, если статья Medium опубликована в Twitter, Medium позволит всем, кто нажимает на статью, прочитать ее, независимо от того, что - потому что это новый потенциальный клиент.

Итак, один из способов обойти платный доступ - сообщить сайту, что мы пришли с сайта социальной сети, такой как Facebook или Twitter.

Мы можем сделать это, изменив часть заголовка «Referer». Когда вы посещаете любой веб-сайт, вы отправляете им заголовок, который содержит такую ​​информацию, как файлы cookie вашего браузера, ваш IP-адрес и т. Д. Часть заголовка «Referer» - это то, что направило вас на сайт. Если вы увидели статью на Medium в Twitter и щелкнули ссылку, чтобы перейти на Medium, рефералом будет «https://t.co/» (или Twitter).

С помощью JavaScript мы можем сделать это, изменив ссылку на https://t.co/, выполнив внутри расширения:

//This is a JavaScript file that is added as a background script through in a browser extension
function changeCookies(details) {
//Redirect Referer
details.requestHeaders = details.requestHeaders.filter(function(header) {
if(header.name === "Referer")
    return false
return true
})
details.requestHeaders.push({
    "name": "Referer",
    "value": "https://t.co/"
})
console.log("Changed Header to Twitter")
return {requestHeaders: details.requestHeaders};
}
//Add listener 
chrome.webRequest.onBeforeSendHeaders.addListener(changeCookies, {
    urls: ["<all_urls>"],
    types: ["main_frame"], },
    ["requestHeaders", "blocking", "extraHeaders"]
);

Это пройдет около 1/3 платных доступов, включая Medium, Towards Data Science и т. Д.

Подмена нашей машины поисковым роботом Google

Большинство сайтов хотят соответствовать сканеру Google, который будет сканировать веб-сайты и все их содержимое. Таким образом, если на сайте включен платный доступ, сканер не сможет сканировать его содержимое. Я не совсем уверен, но предполагаю, что это повлияет на способность веб-сайта отображаться в результатах поиска Google.

Итак, еще один способ обойти платный доступ - сообщить сайту, что мы являемся сканером Google. Мы можем сделать это, изменив части заголовка «User-Agent» и «X-Forwarded-For», например:

//This is a JavaScript file that is added as a background script through in a browser extension
function spoofCrawler(details) {
//Spoof our device as a Google Crawler
var google_adbot_UA = "AdsBot-Google (+http://www.google.com/adsbot.html)"
details.requestHeaders = details.requestHeaders.filter(function(header) {
    if(header.name === "User-Agent" || header.name === "X-Forwarded-  For") {
    return false
}
return true
})
details.requestHeaders.push({
    "name": "User-Agent",
    "value": google_adbot_UA
})
details.requestHeaders.push({
    "name": "X-Forwarded-For",
    "value": "66.102.0.0"
})
console.log("Spoofed as Google crawler")
return {requestHeaders: details.requestHeaders};
}
//Add listener
chrome.webRequest.onBeforeSendHeaders.addListener(spoofCrawler, {
urls: ["<all_urls>"],
types: ["main_frame"], },
["requestHeaders", "blocking", "extraHeaders"]
);

Это позволит обойти большинство платных систем, в том числе Chicago Tribune, Quora и т. Д.

Отключение всех файлов cookie

Некоторые веб-сайты, такие как Bloomberg и New York Times, имеют платный доступ, который нельзя обойти ни одной из ранее упомянутых стратегий. Итак, последнее, что мы можем сделать, это отключить все файлы cookie. Это наименее идеальный подход, потому что это означает, что вы не можете войти в систему или иметь историю чтений и т.д. быть очень популярным).

Эти сайты позволяют вам прочитать ~ 5 бесплатных статей, чтобы соблазнить вас, прежде чем заблокировать вам доступ ко всем статьям с помощью платного доступа. Но как он отслеживает, сколько статей вы прочитали? Печенье.

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

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

Чтобы отключить файлы cookie, мы можем изменить настройки Chrome, например:

//This is a JavaScript file that is added as a background script through in a browser extension
function disableCookies(details) {
root = extractRootWebsite(details.url)
rootSearch = "*://*." + root + "/*"
//Set Cookie Permission if necessary
chrome.contentSettings.cookies.set({
    'primaryPattern': rootSearch,
    'setting': 'block'
});
console.log("Disabled Cookies")
}
//Add listener
chrome.webRequest.onBeforeSendHeaders.addListener(disableCookies, {
    urls: ["<all_urls>"],
    types: ["main_frame"], },
    ["requestHeaders", "blocking", "extraHeaders"]
);

Это позволит обойти последние несколько крайних случаев платного доступа, включая New York Times, Bloomberg и Wall Street Journal.

Наведите

Как упоминалось ранее, существует бесплатное легкое расширение Chrome для обхода платных каналов и блокировки рекламы. Также есть пользовательский интерфейс и все остальное - скачай его из Интернет-магазина Chrome и наслаждайся (nvm chrome снял его :()

Но вы все равно можете получить его здесь, просто прокрутите вниз до инструкций по установке: :)

Https://github.com/nathan-149/hover-paywalls-browser-extension

Спасибо за чтение, надеюсь, вам понравилось чтение! Дайте мне знать, если у вас возникнут вопросы, и удачного дня! :)

Получите доступ к экспертному обзору - Подпишитесь на DDI Intel