Сообщения

Error 0x8000ffff: Unknown HTTP status code 451, returned from URL: https://pkgs.tailscale.com/stable/tailscale- etc..

Когда пытался установить tailscale у друга из РФ, столкнулся с ошибкой установщика 451. Дело в том что стандартный установщик, это на самом деле лаунчер который скачивает .msi файл с сервера. Чтобы небыло ошибки, нужно скачать full версию tailscale, через IP который не заблокирован. В full версии находится как установщик, так и сам tailsacle. Поэтому при установке, никакой ошибки небудет. https://pkgs.tailscale.com/stable/tailscale-setup-full-1.58.2.exe

IT мемы с которыми я столкнулся

Этот пост буду старатся дополнять различными мемами с которыми возможно вы тоже столкнулись гуглив какой то термин или пытаясь исправить ошибку. Бибайт мем Во многих источниках часто говорят что в килобайте 1024 байт, и прочий бред. На самом деле в килобайте 1000 байт. Но в кибибайте 1024. Часто где эти понятия используются взаимозаменяемо, но на самом деле это абсолютно разные понятия. В основном этот мем происходит в старой технической литературе, и в учебниках по информатике которые были написаны во времена Брежнева, и которые перепечатывались без проверки информации специалистами. Мем с Systemd Systemd это часть юникс систем которая позволяет настраивать запуск программ. Например если у вас есть программа-вебсервер то после перезагрузки машины вы хотите чтобы программа запустилась при старте, после инициализации системы. Каждая програма в Systemd представлена Unit-ом который можно настроить. Мем состоит в том что у systemd unit есть 2 режима работы: simple, и forking. И многие люди

Как обходить блокировки вебсайтов в хроме

Изображение
Многие государства цензурируют либо замедляют многие сайты. Например в Казахстане я не могу зайти в blogger.com тк государство заблокироало IP адреса для этого сайта. Но если начать использовать прокси сервер или впн на весь свой трафик, то нагрузка на прокси будет слишком большой. Тк например, неимеет смысла использовать прокси для просмотра ютуба в 1080п. Чтобы избавить прокси сервер от лишней нагрузки можно использовать прокси свитчер, который автоматически выбирает прокси сервер взависимости от настроенных правил. Я использую расширение для браузера  SwitchyOmega . В отличии от многих других свитчеров, этот свитчер опенсурсный. В попапе этого расширения можно выбрать режим работы. Выставляем auto switch, чтобы он переключал на проксю по правилам. Потом заходим в Options, там выставляем прокси сервер который у нас есть. В правилах автосвитча можно настроить свитчинг на прокси взависимости от домена: Это мой текущий сетап для обхода блокировок. Все опенсурсно, и бесплатно. Единственн

Проблемы парсинга сайтов на JS фреймворке reactjs

Сегодня мне надо было парсить сайт на reactjs, и для этого мне требовалось сэмулировать заполнение формы. Чтобы отправить форму надо просто нажать на кнопку отправить, а это эмулируется очень легко - просто надо вызвать .click на элементе кнопки. Самым логичным решением было бы попросту отказатся от эмуляции действия юзера, и просто самому слать HTTP запрос на сервер напрямую. Но из-за специфики задачи мне надо было именно эмулировать действия заполнения инпута. Проблема началась именно когда надо было заполнять текстовые поля формы. Самый простой вариант, это замена .value у элемента input. Но это так неработает, вить сайты написанные на reactjs обычно шлют данные не через <form> с встроенной в браузер функцией submit. Они используют fetch, обычно POST запрос с json данными от заполненной формы. Обычно сайты использующие jquery, или ванильный javascript перед отправкой запроса сами забирают с инпутов данные через .value.  Но это так неработает с фреймворками состояний. В случае

Самый простой способ настроить HTTPS на docker Django

Обычно для крупных проектов я использую nginx, либо полноценные CDN сервисы вроде CloudFlare которые дают https из коробки. Но в моём случае мне требовалось развернуть на дешевом впс сервере всю инфраструктуру, и чтобы был https. Мне нехотелось разбиратся в тонкостях настройки nginx и копатся в каких-то конфигах. В итоге я нашел решение - Caddy . Все что нужно для настройки - DNS A запись, и внешний айпи. Чтобы добавить Caddy к себе в docker-compose, я создал отдельный файл docker-compose.prod.yml: version : '3' services :   caddy :     image : caddy     ports :       - 80:80       - 443:443     volumes :       - ./Caddyfile:/etc/caddy/Caddyfile       - caddy_data:/data       - caddy_config:/config volumes :   caddy_data :   caddy_config : Также создал Caddyfile в корне проекта: bbak.mkhitaryan.pw {   reverse_proxy web:8000 } Все что нужно для настройки - поменяйте домен в директиве с bbak.mkhitaryan.pw на собственный. И всё! Когда сделаете  docker-compose up -f docker-compose.

Namecheap redirect does not work with https

Изображение
I have tried using Namecheap's redirect functionality from my main domain mkhitaryan.pw to my cv. But I quickly run into an issue that Namecheap only allows HTTP requests! When it receives an HTTPS request, it just hangs the connection until timeout: Namecheap redirect only works on port 80! As you can see, the 443 port just hangs the connection, but the 80 port redirect works well! The solution that I found is to use Netlify  instead of Namecheap's redirect. Netlify works very well with HTTPS and allows you to make redirection happen on an HTML page. Netlify also gives you 100GB of free traffic! Good luck spending it with a blank HTML redirect page, that is a few kilobytes large. There are many guides over the WEB on how to connect your Namecheap domain to Netlify. I only provide the HTML page that I used for redirection: <!DOCTYPE html> < html > < head > < meta http-equiv = "refresh" content = "0; url='https://cv.mkhitaryan.p

Installing lightweight proxy server on raspberry pi

Introduction As I live in Armenia, I have a lot of friends across the CIS region who live under internet oppression regimes. For an example the Russians cannot access Instagram, Twitter without a vpn, and many other resources. That makes it very important to them to use proxy/vpn to bypass the DPI, which government regimes use for censorship. Here in Armenia we have clean internet with no censorship, so if I setup a proxy for my friends they can use it to access the free on censorship internet. In most of the guides I found on the internet they are using privoxy, which is insecure  because it has no authentication system built-in, and if left as it is, your proxy IP address will be used by port scanners for various bad stuff like spamming. Such behavior risks your ip address getting marked as spam, or getting used by hackers to make you a suspect of cybercrime. That is why I found a better solution for creating a proxy server called 3proxy . It is pretty lightweight, and has almost no

Shadowsocks готовим домашний vpn на расберипай 2022

Изображение
У нас в Армении очень чистый интернет. Насколько я знаю, понятия блокировка сайтов у нас в стране не существует, в отличии от большанства других стран СНГ. Поэтому я решил создать себе VPN сервер и дать его своим друзьям, чтобы они могли свободно пользоватся интернетом. Есть много разных сервисов для поднятия vpn сервиса, openvpn, wireguard итд, но мне кажется что они в большинстве своём имеют слишком широкий функционал чтобы запускать на встроеных устройствах. Если цель это просто обход блокировок, и шифрация промежуточного трафика то по моему shadowsocks самый лучший вариант. Самый простой способ поставить шадоусокс на малину это использовать apt-get. Но в нём последний билд shadowsocks был в 2018 году. Поэтому лучше установить самому с гитхаба  https://github.com/shadowsocks/shadowsocks-rust/ . Кроме того, shadowsocks с тех пор переписывали с питона на си, а теперь и вовсе поддерживается только версия на rust. Чтобы скачать нужно просто скачать tar архив с релизов билдов и распакова

Errors when installing aiortc from git on Windows

Изображение
When I was trying to install aiortc on windows I got stuck with multiple errors. When you just do pip install . you will not get a working version: c1083: cannot open include file: 'opus/opus.h': no such file or directory 'vcpkg' is not recognized as an internal or external command To fix those errors you need to install the native libraries by the script provided by  aiortc-codecs . Also you will need build tools etc. If you have no build tools installed you can install them . Run the visual studio installer and opt those packages: You also need to install  vcpkg . Download from git: git clone https://github.com/Microsoft/vcpkg.git , run the install script: .\vcpkg\bootstrap-vcpkg.bat and add it to path by using "Edit environment variables" Double tab on Path and add vcpkg folder to the list, it should have vcpkg.exe file in it: Reboot your pc, or reopen the cmd so it has Path updated. Now we need to use the dependency installer script from  https://github

Почему часто используют шестнадцатеричное представление для бинарных данных

Я раньше непонимал почему его вообще используют и зачем оно нужно. На самом деле это самый удобный способ представления бинарных данных человеку. Поскольку бинарная куча неразборчива для человека. Для него все эти единицы и нули сливаются в одну непонятную кучу. Поэтому использование hex для визуальной инспекции бинарной последовательности более удобно. Как мы все знаем 1 байт это 8 бит. 1 бит это 2 возможных значения (1 и 0). Получается 8 позиций по 2 размещения. То есть в 1 байте есть 2^8 (256) возможных состояния. Hex имеет 16 состояний 0-9 и A-F. 0--9 стостояний получается 10, и A-F (ABCDEF (6 стостяний)). И так удобно получилось что если вы расставите 2 hex символа то получится 16*16=256 комбинаций.

Пропускаем звук с микрофона android в Ubuntu

Изображение
Покопавшись в интернете я нашел много разных туториалов которые показывают методы пропуска звука через mumble сервер и клиент мамбла на телефоне, пропориетарнаый софт WO Mic , и много других. Все эти варианты требуют установки слишком много дополнительных пакетов, либо пропориетарны и написаны непонятно кем. Вдруг в WO Mic есть ратник, как то это все небезопасно. В репозитории варианта с mumble сервер я нашел  https://github.com/MatthiasCoppens/pulseaudio-virtualmic . Этот вариант не требует установки никаких дополнительных или пропориетарных пакетов на ПК. Он может пропускать звук из внешнего источника (например http сервера стримещего mp3). Используя этот скрипт + приложения LANmic  у меня получилось стримить микрофон с телефона на ПК. В настройках звука убунты мне просто потребовалось выбрать как вход этот unix сокет. В остальных вариантах звук всегда доходил с задержкой, но используя этот скрипт задержка минимальна и даже не чувствуется. Хотя если открыть стрим например LANmic нап

How to install trusted certificate from charlesproxy on Chrome Ubuntu 2021

Изображение
When you use charlesproxy and don't configure charlesproxy's CA as trusted ssl you will get this error in chrome: That happens because chrome detect that the SSL certificate is being replaced to some self signed CA. To fix this error you need to export your certificate from charlesproxy, and add it to the chrome's "Authorities" tab. The most important thing is to export the certificate in .CER format, not in .PEM as set by default. Chrome has troubles reading PEM, the only working format is CER. Then go to the chrome's ssl settings page  chrome://settings/certificates and go to the "Authorities" tab: The default chrome's file browser will not show you .cer files, you need to change the file browser's settings to show all files. The .cer file will appear and you need to chose it: Then on the chrome's check "Trust this certificate for identifying websites": After that, the https error page must be gone because chrome now trusts

Python requests ошибка SSL соединения

Изображение
У некоторых сайтов с неправильно настроенным SSL сервером могут возникать проблемы соединеня. В моем случае было странно то что я мог посетить веб сайт через браузер и никаких ошибок не вознкало, но когда я пытался отправить запрос через командную строку curl или скриптом питона то возникала ошибка SSL соединения. Я изучил в чем была проблема, оказалось что в браузерах есть встроенная система востановления недостающих SSL сертификатов. В моем случае была проблема в том что сервер не отдавал промежуточный сертификат. Браузер искал его по своей внутренней базе данных и смог восстановить его. Но у небраузеров такой функции небыло. Вы можете проверить тожесамое посетив сайт https://incomplete-chain.badssl.com . Если вы попробуете послать на него запрос через curl то получите ошибку. Чтобы исправить эту ошибку посылайте запрос с verify=False .