Интервю на Гласове със Андрей Райчев

Андрей описва миналото и прехода.

„попадат под най-страшното определение за човека, съществото с илюзии, формулирано от Лао Дзъ: Който не знае къде отива, отива другаде.
Те винаги, дори когато им се струва, че успяват, попадат другаде. Това е тяхна задължителна съдба“

Интервю с Андрей Райчев част 1
Интервю с Андрей Райчев част 2
Интервю с Андрей Райчев част 3

Интервю на Гласове със Андрей Райчев

macOS поправка на счупени приложения

Едно от най-досадните неща във новите macOS (OSX) е когато каже, че дадено приложение е повредено и няма да работи повече. Това се причинява от новия GateKeeper който вече не позволява на неподписани приложения или счупени такива да работят.

Ето и как изглежда това:
macos damaged app
И защо се появява:
gatekeeper
забележете, че липсва „Anywhere“.

Ето и как можете да го оправите:
1. Отваряте терминал
2. Пишете това:
sudo spctl –master-disable
забележете че има две тирета и така и трябва да бъде
3. Ще бъдете помолени да си оставите паролата.

Сега вече можете да пускате приложения:

Тъй като „Anywhere“ вече присъства.

Ако искате да го върнете следвайте горните стъпки, но за точка 2 напишете това:
sudo spctl –master-enable

macOS поправка на счупени приложения

Prince of Persia Cheats

Ако сте играли оригиналния Prince of Persia оттук:
https://archive.org/details/msdos_Prince_of_Persia_1990
ето и как да си улесните живота със малко чийтване.

Първо натискате Ctrl-Q за да излезете от играта. После го пускате така „prince megahit“. След което можете да натискате следните клавиши:
+ – добавя още време
Shift-L – минава на следващото ниво
Shift-T – дава още животи
Shift-S – лекува изгубени животи
Shift-W – позволява летене докато падате
K – убива противника на екрана

Има и още няколко комбинации които можете да видите тук

Prince of Persia Cheats

Редирект Хаос Мтел част 2

Както във предната част ви показах, че има проблеми при редиректи след по-детайлен анализ то се оказа, че те даже са и по-големи.

Намери се едно огледално копие на Debian:
http://debian.mobiltel.bg/

На следния адрес:
http://w4.mtel.net
може да бъде намерен сайта на GPS.BG:
http://www.gps.bg

Сайта на една известна адвокатска кантора може да бъде видян по няколко начина:
http://mbridge.mtel.net/
http://ipabg.mtel.net/
http://balkandji.mtel.net/
http://dom.mtel.net/
http://marisimone.mtel.net/
http://a.mtel.net/

Тук и
http://w6.mtel.net/
има някакъв изоставен Tomcat, който за сметка на това също е добре индексиран.

Далеч по-интересното е какво се случва със останалите домейни на придобити компании през времето. Това са 3 компании – Близу, СпектърНет и МегаЛан.

Започваме със Близу:
$ curl -I blizoo.bg
HTTP/1.1 301 Moved Permanently
Date: Fri, 17 Aug 2018 11:43:57 GMT
Server: Apache/2.4.25 (FreeBSD) OpenSSL/1.0.2k-freebsd PHP/7.0.17
Location: http://www.blizoo.bg/
Content-Type: text/html; charset=iso-8859-1

$ curl -I www.blizoo.bg
HTTP/1.1 301 Moved Permanently
Date: Fri, 17 Aug 2018 11:43:59 GMT
Server: Apache/2.4.25 (FreeBSD) OpenSSL/1.0.2k-freebsd PHP/7.0.17
X-Powered-By: PHP/7.0.17
Set-Cookie: PHPSESSID=vcpe31mj0lh1r66m3snkofrga4; path=/; domain=.blizoo.bg
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Location: https://www.a1.bg/blanding
Content-Type: text/html; charset=UTF-8

$ curl -I https://www.blizoo.bg
HTTP/1.1 301 Moved Permanently
Date: Fri, 17 Aug 2018 11:44:05 GMT
Server: Apache/2.4.25 (FreeBSD) OpenSSL/1.0.2k-freebsd PHP/7.0.17
X-Powered-By: PHP/7.0.17
Set-Cookie: PHPSESSID=esk78doapo8ncgda4j1ddffj75; path=/; domain=.blizoo.bg
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Location: https://www.a1.bg/blanding
Content-Type: text/html; charset=UTF-8

$ curl -I https://blizoo.bg
HTTP/1.1 301 Moved Permanently
Date: Fri, 17 Aug 2018 11:44:08 GMT
Server: Apache/2.4.25 (FreeBSD) OpenSSL/1.0.2k-freebsd PHP/7.0.17
Location: http://www.blizoo.bg/
Content-Type: text/html; charset=iso-8859-1

Както виждаме има някакви редиректи и те работят по някакъв начин. Интересното е, че стария сайт обаче още работи:
$ curl -I www.blizoo.bg/images/Root/downloads/gt/p3_pricelist_blizoo.pdf
HTTP/1.1 200 OK
Date: Fri, 17 Aug 2018 11:43:38 GMT
Server: Apache/2.4.25 (FreeBSD) OpenSSL/1.0.2k-freebsd PHP/7.0.17
Last-Modified: Thu, 28 Jan 2016 09:52:29 GMT
ETag: "118c7c-52a61e06d3140"
Accept-Ranges: bytes
Content-Length: 1150076
Cache-Control: max-age=86400
Expires: Sat, 18 Aug 2018 11:43:38 GMT
Content-Type: application/pdf

$ curl -I https://www.blizoo.bg/images/Root/downloads/gt/p3_pricelist_blizoo.pdf
HTTP/1.1 200 OK
Date: Fri, 17 Aug 2018 11:54:25 GMT
Server: Apache/2.4.25 (FreeBSD) OpenSSL/1.0.2k-freebsd PHP/7.0.17
Last-Modified: Thu, 28 Jan 2016 09:52:29 GMT
ETag: "118c7c-52a61e06d3140"
Accept-Ranges: bytes
Content-Length: 1150076
Cache-Control: max-age=86400
Expires: Sat, 18 Aug 2018 11:54:25 GMT
Content-Type: application/pdf

Или поне някакви части от него са все още видими. За да бъде объркването пълно си има и напълно работещи редиректи вътре в самия сайт:
$ curl -I blizoo.bg/images/Root/downloads/gt/p3_pricelist_blizoo.pdf
HTTP/1.1 301 Moved Permanently
Date: Fri, 17 Aug 2018 11:54:13 GMT
Server: Apache/2.4.25 (FreeBSD) OpenSSL/1.0.2k-freebsd PHP/7.0.17
Location: http://www.blizoo.bg/images/Root/downloads/gt/p3_pricelist_blizoo.pdf
Cache-Control: max-age=2592000
Expires: Sun, 16 Sep 2018 11:54:13 GMT
Content-Type: text/html; charset=iso-8859-1

$ curl -I https://blizoo.bg/images/Root/downloads/gt/p3_pricelist_blizoo.pdf
HTTP/1.1 301 Moved Permanently
Date: Fri, 17 Aug 2018 11:54:20 GMT
Server: Apache/2.4.25 (FreeBSD) OpenSSL/1.0.2k-freebsd PHP/7.0.17
Location: http://www.blizoo.bg/images/Root/downloads/gt/p3_pricelist_blizoo.pdf
Cache-Control: max-age=2592000
Expires: Sun, 16 Sep 2018 11:54:20 GMT
Content-Type: text/html; charset=iso-8859-1

И ето още една част:

$ curl -I https://www.blizoo.bg/images/Root/downloads/gt/
HTTP/1.1 403 Forbidden
Date: Fri, 17 Aug 2018 11:56:31 GMT
Server: Apache/2.4.25 (FreeBSD) OpenSSL/1.0.2k-freebsd PHP/7.0.17
Content-Type: text/html; charset=iso-8859-1

$ curl -I http://www.blizoo.bg/images/Root/downloads/gt/
HTTP/1.1 403 Forbidden
Date: Fri, 17 Aug 2018 11:56:45 GMT
Server: Apache/2.4.25 (FreeBSD) OpenSSL/1.0.2k-freebsd PHP/7.0.17
Content-Type: text/html; charset=iso-8859-1< $ curl -I https://blizoo.bg/images/Root/downloads/gt/
HTTP/1.1 301 Moved Permanently
Date: Fri, 17 Aug 2018 11:56:37 GMT
Server: Apache/2.4.25 (FreeBSD) OpenSSL/1.0.2k-freebsd PHP/7.0.17
Location: http://www.blizoo.bg/images/Root/downloads/gt/
Content-Type: text/html; charset=iso-8859-1

$ curl -I http://blizoo.bg/images/Root/downloads/gt/
HTTP/1.1 301 Moved Permanently
Date: Fri, 17 Aug 2018 11:56:42 GMT
Server: Apache/2.4.25 (FreeBSD) OpenSSL/1.0.2k-freebsd PHP/7.0.17
Location: http://www.blizoo.bg/images/Root/downloads/gt/
Content-Type: text/html; charset=iso-8859-1
/code>

И още един файл който е важен:
$ curl -I http://www.blizoo.bg/robots.txt
HTTP/1.1 200 OK
Date: Fri, 17 Aug 2018 12:02:53 GMT
Server: Apache/2.4.25 (FreeBSD) OpenSSL/1.0.2k-freebsd PHP/7.0.17
Last-Modified: Tue, 04 Dec 2012 15:52:37 GMT
ETag: "18-4d008dadbdb40"
Accept-Ranges: bytes
Content-Length: 24
Content-Type: text/plain

Това допълнително обърква роботите и те продължават да се опитват да индексират стария сайт на Близу.
Затова навсякъде се казва когато се прави миграция на домейн към друг да се прави цялостен 301 редирект от стария към новия.

Втората закупена компания е Мегалан:
curl -I megalan.bg
HTTP/1.1 302 Redirect
Content-Length: 145
Content-Type: text/html; charset=UTF-8
Location: https://www.megalan.bg
Server: Microsoft-IIS/8.5
Date: Fri, 17 Aug 2018 12:07:41 GMT

$ curl -I www.megalan.bg -L
curl: (7) Failed to connect to www.megalan.bg port 80: Operation timed out

$ curl -I https://www.megalan.bg -L
curl: (7) Failed to connect to www.megalan.bg port 443: Network is unreachable

$ curl -I megalan.bg/robots.txt -L
HTTP/1.1 302 Redirect
Content-Length: 145
Content-Type: text/html; charset=UTF-8
Location: https://www.megalan.bg
Server: Microsoft-IIS/8.5
Date: Fri, 17 Aug 2018 12:25:26 GMT

За жалост тук не виждаме никакъв реализиран редирект и не можем да осъществим връзка със www.megalan.bg.
Което по същество си е още една пропусната възможност защото домейна беше много добре индексиран във миналото като интернет доставчик за София.

И последния участник е Спектърнет. По стар народен обичай за тукашните ширини те са използвали 2 домейна като основни:
spnet.net
spectrumnet.bg
а година преди придобиването им от МТел бяха закупили и небезизвестните Орбител:
orbitel.bg
заедно със хитовия им проект тогава
hit.bg

Но нека да започнем по реда им:
$ curl spnet.net -I
HTTP/1.1 403 Forbidden
Date: Fri, 17 Aug 2018 12:37:57 GMT
Server: Apache
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Robots-Tag: none
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Content-Type: text/html; charset=iso-8859-1

$ curl www.spnet.net -I
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Fri, 17 Aug 2018 12:38:00 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.mtel.bg/spnet
Vary: Accept-Encoding

$ curl https://spnet.net -I
HTTP/1.1 403 Forbidden
Date: Fri, 17 Aug 2018 12:39:04 GMT
Server: Apache
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Robots-Tag: none
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Last-Modified: Thu, 16 Oct 2014 13:20:58 GMT
Accept-Ranges: bytes
Content-Length: 4897
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Pragma: no-cache
Content-Type: text/html; charset=UTF-8

$ curl https://www.spnet.net -I -k
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Fri, 17 Aug 2018 12:39:11 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.mtel.bg/spnet
Vary: Accept-Encoding

Тук вече редиректите са реализирани, но само на ниво www. Когато се достъпва домейна без www се връща грешка 403.
Интересното е, че на този домейн е вързано и огледалното копие на Debian:
http://debian.spnet.net/
но то може да се достъпи и ето така:
http://bbgra.spnet.net

Има обаче проблем при достъпа на spectrumnet.bg:
$ curl -I http://www.spectrumnet.bg/
curl: (7) Failed to connect to www.spectrumnet.bg port 80: Operation timed out
$ curl -I http://spectrumnet.bg/
curl: (7) Failed to connect to spectrumnet.bg port 80: Operation timed out
$ curl -I https://www.spectrumnet.bg/
curl: (7) Failed to connect to www.spectrumnet.bg port 443: Operation timed out
$ curl -I https://spectrumnet.bg/
curl: (7) Failed to connect to spectrumnet.bg port 443: Operation timed out

Така, че този домейн също попада във графата "пропуснати възможности".

Нека да видим и какво се случва със Орбител:
$ curl -I orbitel.bg
curl: (6) Could not resolve host: orbitel.bg
$ curl -I www.orbitel.bg
curl: (6) Could not resolve host: www.orbitel.bg

И Хит:
$ curl -I hit.bg
curl: (7) Failed to connect to hit.bg port 80: Operation timed out
$ curl -I www.hit.bg
curl: (7) Failed to connect to www.hit.bg port 80: Operation timed out

Още една "пропусната възможност".

Накратко както виждате сами вместо да се направят хубави редиректи и да се усили силата основния домейн (вече) А1.
Редиректите където са направени или са половинчато направени като допълнително объркват ботовете или самите домейни не работят поради някаква причина.

Може би мениджърите на А1 отговорни за онлайн дейностите би било хубаво да направят един хубав одит на сайтовете си преди да продължат напред със развиването на основния си сайт.

Редирект Хаос Мтел част 2

Редирект Хаос Мтел

Сега ще ви покажа как неправилни редиректи може да ви навредят много.

Както знаете Мтел вече не съществува и имаме А1. Нека да видим какво се случва със редиректите на сайта им?

Започваме със https://mobiltel.bg

$ curl https://mobiltel.bg/ -L -I -k
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:02:33 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.mtel.bg/
Vary: Accept-Encoding

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:02:33 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.a1.bg/mtel-stava-A1/
Vary: Accept-Encoding

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 16 Aug 2018 12:02:33 GMT
Content-Type: text/html
Connection: close
Last-Modified: Tue, 07 Aug 2018 08:31:39 GMT
ETag: "181300-e8b2-572d43907d0c0"
Accept-Ranges: bytes
Content-Length: 59570
Vary: Accept-Encoding

И проблема лъсна – сайта на A1 може да се гледа и под HTTP. Продължаваме със http

$ curl http://mobiltel.bg/ -L -I -k
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:03:32 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.mtel.bg/
Vary: Accept-Encoding

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:03:32 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.a1.bg/mtel-stava-A1/
Vary: Accept-Encoding

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 16 Aug 2018 12:03:32 GMT
Content-Type: text/html
Connection: close
Last-Modified: Tue, 07 Aug 2018 08:31:39 GMT
ETag: "182509-e8b2-572d43907d0c0"
Accept-Ranges: bytes
Content-Length: 59570
Vary: Accept-Encoding

И добавяме и www със и без HTTPS
$ curl http://www.mobiltel.bg/ -L -I -k
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:04:49 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.mtel.bg/
Vary: Accept-Encoding

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:04:49 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.a1.bg/mtel-stava-A1/
Vary: Accept-Encoding

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 16 Aug 2018 12:04:50 GMT
Content-Type: text/html
Connection: close
Last-Modified: Tue, 07 Aug 2018 08:31:39 GMT
ETag: "181300-e8b2-572d43907d0c0"
Accept-Ranges: bytes
Content-Length: 59570
Vary: Accept-Encoding

$ curl https://www.mobiltel.bg/ -L -I -k
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:04:55 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.mtel.bg/
Vary: Accept-Encoding

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:04:55 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.a1.bg/mtel-stava-A1/
Vary: Accept-Encoding

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 16 Aug 2018 12:04:55 GMT
Content-Type: text/html
Connection: close
Last-Modified: Tue, 07 Aug 2018 08:31:39 GMT
ETag: "182509-e8b2-572d43907d0c0"
Accept-Ranges: bytes
Content-Length: 59570
Vary: Accept-Encoding

Интересното е, че редиректа работи само към основната страница. Ако се зададе вътрешна страница линка се предава към последващия редирект.

$ curl https://www.mobiltel.bg/robots.txt -L -I -k
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:09:00 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.mtel.bg/robots.txt
Vary: Accept-Encoding

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:09:00 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.a1.bg/robots.txt
Vary: Accept-Encoding

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 16 Aug 2018 12:09:00 GMT
Content-Type: text/plain
Connection: close
Last-Modified: Thu, 17 May 2018 12:29:47 GMT
ETag: "183f09-4b8-56c65fdaca4c0"
Accept-Ranges: bytes
Content-Length: 1208
Vary: Accept-Encoding

Продължаваме със един друг домейн mtel.net

$ curl http://www.mtel.net/ -L -I -k
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:11:17 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.mtel.bg/
Vary: Accept-Encoding

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:11:17 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.a1.bg/mtel-stava-A1/
Vary: Accept-Encoding

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 16 Aug 2018 12:11:17 GMT
Content-Type: text/html
Connection: close
Last-Modified: Tue, 07 Aug 2018 08:31:39 GMT
ETag: "182509-e8b2-572d43907d0c0"
Accept-Ranges: bytes
Content-Length: 59570
Vary: Accept-Encoding

$ curl http://mtel.net/ -L -I -k
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:11:46 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.mtel.bg/
Vary: Accept-Encoding

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:11:46 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.a1.bg/mtel-stava-A1/
Vary: Accept-Encoding

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 16 Aug 2018 12:11:46 GMT
Content-Type: text/html
Connection: close
Last-Modified: Tue, 07 Aug 2018 08:31:39 GMT
ETag: "182509-e8b2-572d43907d0c0"
Accept-Ranges: bytes
Content-Length: 59570
Vary: Accept-Encoding

Същия резултат е и под HTTPS със или без www отпред.

Следващия домейн е mtel.bg койо май издържа най-дълго:
$ curl http://www.mtel.bg/ -L -I -k
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:21:34 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.a1.bg/mtel-stava-A1/
Vary: Accept-Encoding

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 16 Aug 2018 12:21:34 GMT
Content-Type: text/html
Connection: close
Last-Modified: Tue, 07 Aug 2018 08:31:39 GMT
ETag: "182509-e8b2-572d43907d0c0"
Accept-Ranges: bytes
Content-Length: 59570
Vary: Accept-Encoding

$ curl http://mtel.bg/ -L -I -k
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:21:41 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.a1.bg/mtel-stava-A1/
Vary: Accept-Encoding

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 16 Aug 2018 12:21:41 GMT
Content-Type: text/html
Connection: close
Last-Modified: Tue, 07 Aug 2018 08:31:39 GMT
ETag: "246b22-e8b2-572d43907d0c0"
Accept-Ranges: bytes
Content-Length: 59570
Vary: Accept-Encoding

Същия резултат е и под HTTPS със или без WWW.

Доста по-интересно е тук:
http://www.a1.bg/sitemap.xml
където линковете са към:
http://www.mtel.bg/sitemap_www.xml
http://www.mtel.bg/sitemap_products.xml
и изглежда генерирането им е спряло някъде през Май 2018та.

Влизаме във сайтмапа със продуктите където също сочат към mtel.bg и си харесваме първия:
https://www.mtel.bg/ustroystva/laptopi/acer/travelmate-x349.3370
и отваряме сорса. Намираме още 2 линка към mtel.bg:
http://mtel.bg/public/file/id/ebd9dc98957b723ce7be035e56dfcfe9/acer-travelmate-x349-product.png
https://media.mtel.bg/newsite2015/images/mega-menu/myki.jpg

Втория домейн може да се зареди със или без HTTPS разбира се. По-фрапантното е, че същата снимка може да се намери и тук:
http://media.a1.bg/newsite2015/images/mega-menu/myki.jpg
https://media.a1.bg/newsite2015/images/mega-menu/myki.jpg

Разбира се този хаос има и една приятна новина – все пак логването минава задължително през HTTPS:
$ curl -I http://a1.bg/moyat-a1-upravlyavay-sam-svoite-uslugi -L
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:31:39 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.a1.bg/moyat-a1-upravlyavay-sam-svoite-uslugi
Vary: Accept-Encoding

HTTP/1.1 302 Found
Server: nginx
Date: Thu, 16 Aug 2018 12:31:39 GMT
Content-Type: text/html
Connection: close
Set-Cookie: PHPSESSID=i7hoh0m33jdqkf36rldg41vlo6; path=/; domain=www.a1.bg; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=dss9df9253jluc4jbejkpjtqa3; path=/; domain=www.a1.bg; HttpOnly
Set-Cookie: device=desktop; expires=Sun, 13-Aug-2028 12:31:39 GMT; path=/; domain=.a1.bg
Set-Cookie: device=desktop; expires=Sun, 13-Aug-2028 12:31:39 GMT; path=/; domain=.a1.bg
Set-Cookie: device=desktop; expires=Sun, 13-Aug-2028 12:31:39 GMT; path=/; domain=.a1.bg
Location: https://www.a1.bg/moyat-a1-upravlyavay-sam-svoite-uslugi
Vary: Accept-Encoding

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 16 Aug 2018 12:31:41 GMT
Content-Type: text/html
Connection: close
Set-Cookie: PHPSESSID=kl0lfvrmpp4pa4182fm77mrfm3; path=/; domain=www.a1.bg; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=v3a01obe7oocra81c2hceir6e1; path=/; domain=www.a1.bg; HttpOnly
Set-Cookie: device=desktop; expires=Sun, 13-Aug-2028 12:31:41 GMT; path=/; domain=.a1.bg
Set-Cookie: device=desktop; expires=Sun, 13-Aug-2028 12:31:41 GMT; path=/; domain=.a1.bg
Set-Cookie: device=desktop; expires=Sun, 13-Aug-2028 12:31:41 GMT; path=/; domain=.a1.bg
Vary: Accept-Encoding

$ curl -I http://www.a1.bg/moyat-a1-upravlyavay-sam-svoite-uslugi -L
HTTP/1.1 302 Found
Server: nginx
Date: Thu, 16 Aug 2018 12:32:04 GMT
Content-Type: text/html
Connection: close
Set-Cookie: PHPSESSID=q36aqoaea4udfln23p4p5mms00; path=/; domain=www.a1.bg; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=t8nns92n1i1qjme3b55dgnoq03; path=/; domain=www.a1.bg; HttpOnly
Set-Cookie: device=desktop; expires=Sun, 13-Aug-2028 12:32:04 GMT; path=/; domain=.a1.bg
Set-Cookie: device=desktop; expires=Sun, 13-Aug-2028 12:32:04 GMT; path=/; domain=.a1.bg
Set-Cookie: device=desktop; expires=Sun, 13-Aug-2028 12:32:04 GMT; path=/; domain=.a1.bg
Location: https://www.a1.bg/moyat-a1-upravlyavay-sam-svoite-uslugi
Vary: Accept-Encoding

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 16 Aug 2018 12:32:05 GMT
Content-Type: text/html
Connection: close
Set-Cookie: PHPSESSID=bl1fub9vcmqlnjmug87nsam4a7; path=/; domain=www.a1.bg; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=di8qdhfdkd56rg68ca8757kta4; path=/; domain=www.a1.bg; HttpOnly
Set-Cookie: device=desktop; expires=Sun, 13-Aug-2028 12:32:04 GMT; path=/; domain=.a1.bg
Set-Cookie: device=desktop; expires=Sun, 13-Aug-2028 12:32:04 GMT; path=/; domain=.a1.bg
Set-Cookie: device=desktop; expires=Sun, 13-Aug-2028 12:32:04 GMT; path=/; domain=.a1.bg
Vary: Accept-Encoding

Обаче защо със 302 редирект?

И последен тест със новия домейн А1:

$ curl -I http://a1.bg/test -L
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:37:21 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.a1.bg/test
Vary: Accept-Encoding

HTTP/1.1 404 Not Found
Server: nginx
Date: Thu, 16 Aug 2018 12:37:21 GMT
Content-Type: text/html
Connection: close
Set-Cookie: PHPSESSID=em2uptm6ja7735d74ons6srka1; path=/; domain=www.a1.bg; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=bjfopn6pgd82glq69cp9sumt97; path=/; domain=www.a1.bg; HttpOnly
Set-Cookie: device=desktop; expires=Sun, 13-Aug-2028 12:37:21 GMT; path=/; domain=.a1.bg
Vary: Accept-Encoding

$ curl -I https://a1.bg/test -L
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Aug 2018 12:36:41 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Location: http://www.a1.bg/test
Vary: Accept-Encoding

HTTP/1.1 404 Not Found
Server: nginx
Date: Thu, 16 Aug 2018 12:36:41 GMT
Content-Type: text/html
Connection: close
Set-Cookie: PHPSESSID=rurlb92cva9hkr3tac8mf95l81; path=/; domain=www.a1.bg; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=u9190l2kanjvkbl1jajm2s3b33; path=/; domain=www.a1.bg; HttpOnly
Set-Cookie: device=desktop; expires=Sun, 13-Aug-2028 12:36:41 GMT; path=/; domain=.a1.bg
Vary: Accept-Encoding

Разбира се за да бъде хаоса пълен canonical на техните адреси сочи към HTTPS://WWW което допълнително обърква бота кой е основния домейн.

Накратко ако правите редиректи не правете като тях. Това е и основната причина сайта все още да се вижда така:
site:mtel.bg
site:mobiltel.bg
site:mtel.net
и новия A1 да е частично индексиран близо 3 месеца след пускането му.

Статията има допълнение което може да бъде прочетено ето тук.

Редирект Хаос Мтел

PHP7 Mac

Ако сте на Мак и не ви се ползват Портовете или Самоварките (ports/homebrew) обаче PHP 7 ви липсва…

https://php-osx.liip.ch

Поддържа се всичко от PHP 5.3 до 7.3 и работи на всички macOS 10.6 до 10.13.

PHP7 Mac

Node.js and npm update

Наложи ми се да обновя на macOS някакъв остарял node.js и ето конкретните стъпки
1. Пишем npm version и виждаме това:
{ npm: ‘3.10.3’,
ares: ‘1.10.1-DEV’,
http_parser: ‘2.7.0’,
icu: ‘57.1’,
modules: ’48’,
node: ‘6.5.0’,
openssl: ‘1.0.2h’,
uv: ‘1.9.1’,
v8: ‘5.1.281.81’,
zlib: ‘1.2.8’ }
2. Пишем node -V и виждаме това:
v6.5.0

Които са инсталирани някъде 2015 или 2016та и са праисторически спрямо днешните стандарти.

Обновяванието става лесно:
1. sudo npm install -g npm
2. npm version вече връща това:
{ npm: ‘6.1.0’,
ares: ‘1.14.0’,
cldr: ‘33.0’,
http_parser: ‘2.8.0’,
icu: ‘61.1’,
modules: ’64’,
napi: ‘3’,
nghttp2: ‘1.32.0’,
node: ‘10.6.0’,
openssl: ‘1.1.0h’,
tz: ‘2018c’,
unicode: ‘10.0’,
uv: ‘1.21.0’,
v8: ‘6.7.288.46-node.13’,
zlib: ‘1.2.11’ }
3. sudo npm cache clean -f
4. sudo npm install -g n
5. И вече можем да напишем sudo n latest или sudo n stable. Изчакваме малко
6. node -v вече връща
v10.6.0

Оттук насетне обновяването към последните версии е само:
1. sudo npm install -g npm
2. sudo npm cache clean -f
3. sudo n stable (или latest)

Node.js and npm update

Прескачане на paywalls

Един от най-хитрите начини за прескачане на платените механизми на сайтовете са следните два кода
javascript:window.location="https://m.facebook.com/l.php?u="+encodeURIComponent(window.location.href);
или
javascript:window.location="https://www.google.com/url?rct=j&url="+encodeURIComponent(window.location.href);

Как работят?

Маркирате един от тях и го завлачвате във лентата за отметките. Когато някой сайт започне да мрънка как не сте си платили за да видите статията избирате отметката записана по рано и си я прочитате без проблем. Защото тези paywalls всъщност внимават когато посетител дойде от Facebook или Google и им показва цялата статия. Със помоща на тези 2 кода вие излъгвате сайта, че идвате  баш от тях.

Прескачане на paywalls

Как да смъкнем картинки от Google Images Search?

Ако някога ви се е налагало да смъквате много картинки от Google по зададена ключова дума трябва да сте били отегчени до смърт от цялото това кликане и записване. Наскоро и на мен ми се наложи и точно поради това намерих един скрипт и ще ви покажа как да го използвате.

var cont=document.getElementsByTagName("body")[0];
var imgs=document.getElementsByTagName("a");
var i=0;var divv= document.createElement("div");
var aray=new Array();var j=-1;
while(++i<imgs.length){

  if(imgs[i].href.indexOf("/imgres?imgurl=http")>0){
divv.appendChild(document.createElement("br"));
aray[++j]=decodeURIComponent(imgs[i].href).split(/=|%|&/)[1].split("?imgref")[0];
divv.appendChild(document.createTextNode(aray[j]));
}
}
cont.insertBefore(divv,cont.childNodes[0]);

Как  да го използваме?

  1. Отваряме любимия си браузър и започваме да търсим по картинка.
  2. Когато се заредят снимките натискаме нейде десен бутон на мишката -> Inspect Element и отиваме на таба „Console“
  3. Копираме  скрипта отгоре и го поставяме там. Натискаме Enter. На някой браузъри може първите няколко резултата да са подпъхнати под хедъра. Махаме хедъра който пречи.
  4. Намираме всички линкове, копираме ги във нов текстов файл. Запазваме текстовия файл примерно като list.txt
  5. Изпълняваме една от следните команди във команден ред:
    wget -i list.txt
    cat file-with-list-of-urls.txt | xargs -n 1 curl -LO
    cat file-with-list-of-urls.txt | xargs -n 1 -P 10 curl -LO
    .
    Резултата и от трите команди е, че файловете се смъкват локално на компютъра. Ако първите две смъкват файл по файл то последната смъква по 10 файла наведнъж.

Така процеса е полу-автоматизиран и много по-бърз.

Допълнение от Владимир Василев за което се бях сетил, но съм го пропуснал:
Внимавайте за лицензите! Това, че смъквате изображенията не означава, че имате права върху тях самите. Ако искате да ви бъдат показани само такива изображения със съотвените лицензи ползвайте инструментите на търсачката. Безразборното използване на чужди изображения без необходимите права върху тях може да ви докара правни проблеми със собственниците на правата.

google images лицензи

Затова ако ще използвате снимките някъде проверете лицензите преди това.

SaveSave

Как да смъкнем картинки от Google Images Search?

Страната на съветите

От много време все някой ме спира или иска съвет по нещо си. Което е изморително от психическа гледна точка, защото трябва да изслушаш човека, да вникнеш във проблема му и чак тогава да му дадеш съвет. Което разбира се отнема време, но все пак се почва „аз само за малко“. Та винаги се сещам за бруталния руски виц:

Мальчик пас стадо баранов, а когда он заснул,бараны разбежались. Мальчик пошел искать стадо и у подножия горы увидел пожилого человека.“Не видели ли вы,дедушка моих баранов?““Нет,мальчик,не видел,но я дам тебе совет-поднимись выше в гору, там сидит мой отец,он все знает…“ Мальчик поднялся выше и,увидев следующего старика, спросил и у него о баранах. „Нет,дорогой, я их не видел.Но я тоже дам тебе совет- поднимись еще выше…“На самой вершине горы сидел глубокий старик.“Нет ли здесь моих баранов?“-спросил мальчик. „Нет, баранов нет, но есть добрый совет….“ „Что вы все мне даете советы? Мне нужны бараны,а не советы!“ „Дорогой , ты забыл , в какой стране живешь! У нас не страна баранов, а Страна Советов!“

Та се превръщам във страната на съветите.

Страната на съветите