Фак Роскомнадзору и иже с ним — часть 1

доступ запрещенЯ сторонник свободы доступа к информации. Да, мне несомненно будет неприятно найти свои личные данные где-то в общем доступе — и это одна из граней свободной информации, но вот что бы кто-то решал — могу ли я свободно прочесть что-то вроде «Сопри эту книгу» Эбби Хоффмана (запрещена в Канаде и США), «Моя борьба» Гитлера (тираж контролируется, да и вообще книга крайне редко встречается в свободном доступе), не говоря уже о  крайне опасной для подростков «Над пропастью во ржи» Джея Ди Сэлинджера, которую то запрещают, то цензурят, то опять запрещают… Подобная мысль мне просто противна. Равно как и мысль о том, что по велению какого-то надзорного комитета вдруг могут стать недоступными какие-то сайты в Сети.

Вообще вся ситуация с разграничением доступа к сайтам в Интернете, который последние годы преподносится как чудесная мега-кладезь знаний всего человечества (а человечество — оно ведь не только слишком положительное, или слишком отрицательное) все чаще наталкивает на воспоминания о следующих строках:
«Да, я преступник. Моё преступление — любопытство. Моё преступление в том, что я сужу людей не по тому, как они выглядят, а по тому, что они говорят и думают. Моё преступление в том, что я намного умнее вас. Это то, что вы мне никогда не простите«. Если интересно — полный текст этого знаменитого «Манифеста хакера» вы найдете по этой ссылке 😉

Так вот … мы не будем разбираться с причинами блокировки. Мы просто попробуем понять, как обойти ее. На самом-то деле все просто, и есть несколько крайне простых методик, благодаря которым можно обломать любой Роскомнадзор. Проверенно Великой Китайской Стеной, да 😉

Сегодняшний вечер мы посвятим ознакомлению с TOR, немного о котором я писал ранее.

Рассмотрим основные вопросы использования TOR-браузера:

1. Как это работает?

С теоретической точки зрения все просто: каждый пакет, отправляемый через TOR-сеть шифруется тремя ключами, после чего отправляется на первый прокси-сервер, выбираемый случайным образом. После захода на первый прокси — снимается первый ключ шифрования, после чего сервер узнает — куда далее отправить пакет. Второй прокси-сервер, получивший пакет, снимает второй слой шифра, после чего узнает адрес третьего прокси-сервера, который в свою очередь после получения многострадального пакета снимает третий слой шифрования, и отправлять на целевой адрес запрос в чистом виде. Обратный трафик идет по аналогичной методике.

Неплохой иллюстрацией всего этого процесса будет следующая картинка:

TOR - общая схема работы
TOR — общая схема работы

2. Метод работы

Если не вдаваться углубленно — заходите на ссылку и качайте инсталятор клиента TOR-сети. Запустив инсталятор мы видим меню выбора языка:

TOR - выбор языкавыбираем необходимый нам язык и кликаем Ok, после чего получаем возможность выбрать папку для установки клиента. Выбрав нужный вам каталог — запускайте процесс инсталяции (скорость установки зависит от конфигурации системы).

После завершения установки клиента — запускаем его и попадаем в меню начальной настройки клиента:

tor сетевые настройки

Интересной особенностью TOR — клиента является возможность настройки его работы на компьютерах, чей трафик жестко контролируется либо вредными админами, либо организациями, предпочитающими решать что-то за кого-то. Эта возможность будет доступна вам по клику на пункт «Настроить» после текста «Интернет-соединение этого компьютера цензурируется или находится за прокси…». Однако (в моей практике) — подобная настройка понадобилась только в Китае — на компьютере, работающим за «Великой китайской стеной». Потому в стандартной ситуации вам хватит обычной работы TOR-клиента, начало которой становится возможным после нажатия кнопки «Соединиться».

Сразу после запуска клиента у вас имеется возможность настроить параметры конфиденциальности: возможность сохранения куков, и прочее (рекомендую оставить данные настройки без изменений). Это не даст вам 100% гарантии анонимности и отсутствия возможности получения данных о ваших перемещениях в Сети при доступе непосредственно к вашему компьютеру (специально для этого есть иные методы, которые будут рассмотрены чуть позже 😉 ), но все же обеспечит определенный комфорт и безопасность.

tor настройки безопасности

Что же … Поздравляю 🙂 Ваш клиент готов к работе. Проверить его работоспособность достаточно просто — зайдем на сайт http://myip.ru, позволяющий отследить ваш текущий IP-адрес. В моем случае он показывает следующее:

мой ipЕсли вам интересно увидеть всю цепочку транзитных серверов, через которые идет ваш трафик — кликните на картинку луковицы в левом верхнем углу — так вы сможете не только посмотреть цепочку, но и активировать новую личность (перегрузить цепочку серверов для получения нового IP-адреса, обнулить весь кеш браузера, очистить полученные куки и прочее), или же просто перегрузить цепочку серверов. В моем случае цепочка получается следующей:

tor-цепочка

 

— мой компьютер, Франция, Нидерланды, Нидерланды, целевой сайт

А вот какая цепочка и IP — будет после получения «Новой личности»:

tor-цепочка2

 

— мой компьютер, Франция, Франция, Нидерланды, целевой сайт

Как видите — все просто. Повторюсь — наиболее простые способы сокрытия своего местоположения мы рассмотрим позднее, сейчас же мы просто рассматриваем методы получения доступа к заблокированным по тем или иным причинам сайтам (например — видео или материалы сайта не доступны для демонстрации в какой-либо стране).

Спасибо за внимание 🙂

Понравилась статья? Сделайте репост на свою страницу 🙂

Есть вопросы? Задавайте!

Уроки PHP — foreach

php-lesson-foreachОсобенностью сегодняшнего урока будет тот факт, что оператор foreach применяется только с массивами и объектами — собственно говоря для переборки массивов этот оператор и используется.

Другой особенностью данного оператора является необходимость использования временной переменной для значения, которое получается с помощью этого оператора из массива. Звучит несколько запутанно, но мы сейчас с вами попробуем во всем этом разобраться 😉

Итак, для начала рассмотрим код, предлагаемый Codecademy:

<html>
<head>
<title></title>
</head>
<body>
<p>
<?php
$sentence = array(«I’m «, «learning «, «PHP!»);

___ ($sentence as $word) ___
echo $word;
___
?>
</p>
</body>
</html>

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

<?php
  $numbers = array(1, 2, 3);

  foreach($numbers as $item) {
      echo $item;
  }
?>

За все время изучения PHP мы с вами немного запомнили основные команды и операторы, потому рассматривать код в данном случае особо не будем - и так понятно, что у нас имеется массив, состоящий из слов: "I'm ", "learning ", "PHP!". Перейдем лучше к foreach: его использование начинается с объявления PHP суровой необходимости работы с массивами: foreach ($sentence as $word), что в переводе на простой человеческий может звучать как: начинаем перебирать массив, и каждое значение из массива объявляем временной переменной. После чего мы просто выводим полученное значение: echo $word;
Код, представленный Codecademy, в окончательной форме будет иметь следующий вид: 

<html>
 <head>
 <title></title>
 </head>
 <body>
 <p>
 <?php
 $sentence = array("I'm ", "learning ", "PHP!");
 
 foreach ($sentence as $word) {
 echo $word;
 }
 ?>
 </p>
 </body>
</html>

Для большего развлечения я предлагаю создать код, который сгенерирует ряд случайных чисел, сформирует их них массив, который мы выведем на экран отдельными позициями. Надеюсь, что идея сработает - ведь я тоже только начинаю изучение PHP :) 

Начнем с генерации случайных числе - напомню, что эта операция происходит с помощью команды $a = mt_rand (1,5);, где (1;5) - верхние и нижние ограничения генерируемого числа. 

Итак, ниже представлен код, который работает по следующей схеме:
1. Генерируем переменную $a
2. Генерируем переменную $b
3. Формируем массив, который состоит из переменных $a и $b, а так же их суммы
4. С помощью оператора foreach выводим на экран значения ячеек
5. Радуемся
<!DOCTYPE html>
<html>
 <head>
 </head>
 <body>
 <p>
 <?php
 $a = mt_rand (1,10); //генерируем значение переменной а
 $b = mt_rand (11,15); // генерируем значение переменной в
 $test = array($a, $b, $a+$b); // создаем и заполняем массив
 foreach ($test as $number) { // перебираем массив, и выводим его значения
 echo $number."<br>"; //выводим значения поочередно, каждое - на новой строке (за это отвечает br)
 }
 ?>
 </p>
 </body>
</html>

Уроки PHP — loop — выводим числа десятками от 1 до 100

Сегодняшний урок в Codecademy нацелен на самостоятельное задание: вывести на экран каждое десятое число в промежутке от 1 до 100.

Для начала имеется следующий код:

<html>
<head>
<title>Solo For Loop!</title>
</head>
<body>
<p>
<?php
// Write your for loop below!

?>
</p>
</body>
</html>

Как видим — основного — цикла, который и отвечает за генерацию чисел и их вывод — нет. Вспомним, каким образом устроен loop: начальное значение переменной, до каких пределов может меняться, и каким образом происходит изменение. После указания этих трех параметров не забудьте указать действие, которое нужно выполнить.

for ($i = 0; $i < 101; $i = $i + 10) {
echo $i.»<br>»;
}

Как видно из кода выше — мы создали переменную $i, задали ее начальное значение — нуль, после чего сказали, что она может меняться только до значения 101, а меняться по схеме: начальное значение $i + 10. Таким образом мы отметили, что нас интересует каждое десятое число в промежутке от 0 до 100. И собственно — каждое это число нужно вывести:  echo $i.»<br>»;

Отдельно отмечу, что «<br>» служит для вывода значения $i на отдельной строке, что значительно улучшает внешний вид.

<html>
<head>
<title>Solo For Loop!</title>
</head>
<body>
<p>
<?php
// Write your for loop below!
for ($i = 0; $i < 101; $i = $i + 10) {
echo $i.»<br>»;
}
?>
</p>
</body>
</html>

Уроки PHP — loop

Время идет, вернее даже бежит! И вот так незаметно мы подошли к странному явлению, именуемом loop (петля).

Спешу напомнить, что я просто изучаю PHP, и делюсь уроками и мыслями с вами, потому и изучать мы будем все максимально полно и глубоко.

Итак… У нас имеется пример кода, который с помощью loop выведет все цифры от 1 до 10:

<?php
for ($i = 0; $i < 10; $i++) {
    echo $i;
}
// echoes 0123456789
?>
Стало определенной традицией рассматривать код подробнее: 
$i = 0; - создали переменную, и задали ее начальное значение 
$i < 10 - делаем что-то, пока переменная будет иметь значение меньше 10
$i++ - собственно говорят - именно это и делаем: увеличиваем значение i
{echo $i;} - выводим значение i

Итак, схема описанного выше кода сводится к следующему: начальное значение переменной, до каких границ меняется, по какой причине эта переменная должна меняться (увеличивается или уменьшается), и что делает до тех пор, пока значение переменной не станет ровняться заданной величине. 

Задание текущего урока: к имеющемуся коду добавить что-то, что бы сей код начал правильно работать. 
<html>
 <head>
 <title>For Loops</title>
 </head>
 <body>
 <p>
 <?php
 // Echoes the first five even numbers
 ___ ($i = 2; $i < 11; $i = $i + 2) ___
 echo $i;
 ___
 ?>
 </p>
 </body>
</html>

Учитывая все, что мы с вами обсуждали выше, правильным действием в указанном коде будет: задать начальное for - если нет ДЛЯ - то как же PHP поймет, для чего все это делается - верно? 
Смотря на код далее видим: начальное значение переменное ровняется 2, что-то должно продолжаться до тех пор, пока не достигнет 11, а продолжаться это будет с помощью увеличения значения переменной на 2 (это видно в куске $i = $i + 2). Таким образом - основной код закончен, и должен работать. За исключением - что делать, когда выполнена операция в loop: выводить значение переменной $i. Как мы с вами помним - подобные куски кода окружаются фигурными скобками {}.
Итак, окончательная редакция кода выглядит следующим образом: 
<html>
 <head>
 <title>For Loops</title>
 </head>
 <body>
 <p>
 <?php
 // Echoes the first five even numbers
 for ($i = 2; $i < 11; $i = $i + 2) {
 echo $i;
 }
 ?>
 </p>
 </body>
</html>
php-lesson-loop-for

Уроки PHP — массивы (array) — удаление данных из массива

Сегодня вечером мы рассмотрим возможность как удаления данных из массива, так и массива целиком.

Все просто:

Конструкция

<?php
  $array = array("red", "blue", "green");
  unset($array[2]);
?>

позволяет удалить из массива значение "green"

тогда как код
<?php
  unset($array);
?>

удаляет массив целиком. В целом (тут я повторяюсь, но что делать, если так оно и есть) - все просто, важно понять логику и опробовать свежеузнанный код на практике ;) 
Итак, у нас имеется следующий код: 
<html>
 <head>
 <title>Modifying Elements</title>
 </head>
 <body>
 <p>
 <?php
 $languages = array("HTML/CSS",
 "JavaScript", "PHP", "Python", "Ruby");
 // Write the code to remove Python here!
 
 
 
 // Write your code above this line. Don't
 // worry about the code below just yet; we're
 // using it to print the new array out for you!
 
 foreach($languages as $lang) {
 print "<p>$lang</p>";
 }
 ?>
 </p>
 </body>
</html>
из которого с помощью команды unset нужно удалить значение "Python".
Для начала вспомним, каким образом задается массив вообще: 
 $languages = array("HTML/CSS",
 "JavaScript", "PHP", "Python", "Ruby");

Таким образом, команда unset ($название-массива[поле]) позволяет удалить нужное значение. Повторю, что отсчет в массивах идет с нуля, таким образом наша команда будет выглядеть следующим образом: 

$unset ($languages[3]);
а код в полном виде выглядит: 
<html>
 <head>
 <title>Modifying Elements</title>
 </head>
 <body>
 <p>
 <?php
 $languages = array("HTML/CSS",
 "JavaScript", "PHP", "Python", "Ruby");
 // Write the code to remove Python here!
 unset ($languages [3]);
 
 
 // Write your code above this line. Don't
 // worry about the code below just yet; we're
 // using it to print the new array out for you!
 
 foreach($languages as $lang) {
 print "<p>$lang</p>";
 }
 ?>
 </p>
 </body>
</html>
php-lesson-array-del-dataСпасибо за внимание! 
Если вам понравится этот урок - сделайте репост к себе на страницу ;) 

SMM, PR, WEB