Не так давно я написал топик про Билайн и их автоматическое добавление тулбара с поиском mail.ru. Тогда в html код добавлялся java-script файл, который в свою очередь добавлял плашку с реферальным поиском mail.ru. Прошло 2 месяца и Билайн решил делать все по-другому.

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

Я подумал, что на этом все закончилось, но как оказалось — я ошибся.

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

Сразу вспомнил про Билайн и начал искать причину. Причина, естественно, оказалась в операторе связи и на этот раз в каждую интернет страницу добавляется уже другой код. Перед закрывающимся тегом html билайн добавляет следующий скрипт: tb.beeline.ru/Scripts/App/AnchorCompiled.min.js

Скачать его можно только из сети мобильного интернета билайн.
Файл весит 152 килобайта и представляет из себя jQuery версии v1.10.2 и дополнительный код от программистов билайн.

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

CSS
.beeline-wrap-mini-cabinet-wrapper
{
animation: none;
animation-delay: 0;
animation-direction: normal;
animation-duration: 0;
animation-fill-mode: none;
animation-iteration-count: 1;
animation-name: none;
animation-play-state: running;
animation-timing-function: ease;
backface-visibility: visible;
background: 0 0;
background-clip: border-box;
background-origin: padding-box;
background-position-x: 0;
background-position-y: 0;
background: 0 0/auto auto;
border: 0;
border-style: none;
border-width: medium;
border-color: inherit;
border-bottom: 0;
border-collapse: separate;
border-image: none;
border-left: 0;
border-radius: 0;
border-right: 0;
border-spacing: 0;
border-top: 0;
bottom: auto;
box-shadow: none;
box-sizing: content-box;
caption-side: top;
clear: none;
clip: auto;
color: inherit;
columns: auto;
column-count: auto;
column-fill: balance;
column-gap: normal;
column-rule: medium none currentColor;
column-rule-color: currentColor;
column-rule-style: none;
column-rule-width: none;
column-span: 1;
column-width: auto;
content: normal;
counter-increment: none;
counter-reset: none;
cursor: auto;
direction: ltr;
display: inline;
empty-cells: show;
float: none;
font: 400;
font-family: inherit;
font-size: medium;
font-style: normal;
font-variant: normal;
font-weight: 400;
height: auto;
hyphens: none;
left: auto;
letter-spacing: normal;
line-height: normal;
list-style: disc;
margin: 0;
max-height: none;
max-width: none;
min-height: 0;
min-width: 0;
opacity: 1;
orphans: 0;
outline: 0;
outline: 0;
overflow: visible;
overflow-x: visible;
overflow-y: visible;
padding: 0;
page-break-after: auto;
page-break-before: auto;
page-break-inside: auto;
perspective: none;
perspective-origin: 50% 50%;
position: static;
right: auto;
tab-size: 8;
table-layout: auto;
text-align: inherit;
text-align-last: auto;
text-decoration: none;
text-decoration-color: inherit;
text-decoration-line: none;
text-decoration-style: solid;
text-indent: 0;
text-shadow: none;
text-transform: none;
top: auto;
transform: none;
transform-style: flat;
transition: none;
transition-delay: 0s;
transition-duration: 0s;
transition-property: none;
transition-timing-function: ease;
unicode-bidi: normal;
vertical-align: baseline;
visibility: visible;
white-space: normal;
widows: 0;
width: auto;
word-spacing: normal;
z-index: auto
}

.beeline-button.common label, .beeline-wrap-mini-cabinet input[type=submit], input[type=button]
{
background: #ffe100;
background: -moz-linear-gradient(top, #ffe100 0, #f7a700 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffe100), color-stop(100%, #f7a700));
background: -webkit-linear-gradient(top, #ffe100 0, #f7a700 100%);
background: -o-linear-gradient(top, #ffe100 0, #f7a700 100%);
background: -ms-linear-gradient(top, #ffe100 0, #f7a700 100%);
background: linear-gradient(to bottom, #ffe100 0, #f7a700 100%)
}

.beeline-wrap-mini-cabinet input[type=submit], input[type=button]
{
height: 36px;
font-family: Arial, Verdana;
line-height: 36px
}

.beeline-button input, .beeline-button label, .beeline-wrap-mini-cabinet .beeline-button.disabled .disabled, input[type=submit]
{
display: inline-block
}

.beeline-button.common label, .beeline-wrap-mini-cabinet .beeline-button input, input[type=submit], input[type=button]
{
position: relative;
margin-bottom: 3px;
padding: 0 21px;
cursor: pointer;
text-align: center;
white-space: nowrap;
color: #282828;
border: 1px solid #f0cda7;
border-top-width: 0;
-webkit-border-radius: 24px;
-moz-border-radius: 24px;
border-radius: 24px;
outline: 0;
-webkit-box-shadow: 0 3px 0 0 #bc804a;
-moz-box-shadow: 0 3px 0 0 #bc804a;
box-shadow: 0 3px 0 0 #bc804a;
text-shadow: 0 1px 1px #fee215;
font-size: 15px
}

.beeline-wrap-mini-cabinet .beeline-button, .beeline-wrap-mini-cabinet .beeline-button.sub label
{
display: inline-block
}

.beeline-wrap-mini-cabinet .beeline-button.sub label, .form-phone-box .add-number .add-button, .form-phone-box+.add-number .add-button, .input-select-btn, .insert-button, .sub-btn-link
{
background: #fafafa;
background: -moz-linear-gradient(top, #fafafa 0, #c8c8c8 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fafafa), color-stop(100%, #c8c8c8));
background: -webkit-linear-gradient(top, #fafafa 0, #c8c8c8 100%);
background: -o-linear-gradient(top, #fafafa 0, #c8c8c8 100%);
background: -ms-linear-gradient(top, #fafafa 0, #c8c8c8 100%);
background: linear-gradient(to bottom, #fafafa 0, #c8c8c8 100%)
}

.beeline-wrap-mini-cabinet .beeline-button.sub button, .beeline-wrap-mini-cabinet .beeline-button.sub input[type=submit], .beeline-wrap-mini-cabinet .beeline-button.sub input[type=button], .beeline-wrap-mini-cabinet .beeline-button.sub input[type=reset], .beeline-wrap-mini-cabinet .beeline-button.sub label
{
height: 30px;
margin-bottom: 0;
padding: 0 14px;
cursor: pointer;
color: #282828;
border: 1px solid #C8C8C8;
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
border-radius: 12px;
-webkit-box-shadow: none;
-webkit-box-shadow: 0 2px 0 0 #fff;
-moz-box-shadow: none;
-moz-box-shadow: 0 2px 0 0 #fff;
box-shadow: none;
box-shadow: 0 2px 0 0 #fff;
text-shadow: 0 1px 0 #fff;
font-family: Arial;
font-size: 12px;
line-height: 30px
}

.beeline-wrap-mini-cabinet .beeline-button.sub input:hover, .beeline-wrap-mini-cabinet .beeline-button.sub label:hover
{
background: #fff;
background: -moz-linear-gradient(top, #fff 0, #f0f2f1 45%, #e0dcdb 50%, #c8c8c8 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(45%, #f0f2f1), color-stop(50%, #e0dcdb), color-stop(100%, #c8c8c8));
background: -webkit-linear-gradient(top, #fff 0, #f0f2f1 45%, #e0dcdb 50%, #c8c8c8 100%);
background: -o-linear-gradient(top, #fff 0, #f0f2f1 45%, #e0dcdb 50%, #c8c8c8 100%);
background: -ms-linear-gradient(top, #fff 0, #f0f2f1 45%, #e0dcdb 50%, #c8c8c8 100%);
background: linear-gradient(to bottom, #fff 0, #f0f2f1 45%, #e0dcdb 50%, #c8c8c8 100%)
}

.beeline-wrap-mini-cabinet .beeline-button.common label:hover, .beeline-wrap-mini-cabinet input[type=submit]:hover, .beeline-wrap-mini-cabinet input[type=button]:hover
{
color: #282828;
background: #fefdc4;
background: -moz-linear-gradient(top, #fefdc4 0, #fbb600 49%, #ed9f19 77%, #e9b03f 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fefdc4), color-stop(49%, #fbb600), color-stop(77%, #ed9f19), color-stop(100%, #e9b03f));
background: -webkit-linear-gradient(top, #fefdc4 0, #fbb600 49%, #ed9f19 77%, #e9b03f 100%);
background: -o-linear-gradient(top, #fefdc4 0, #fbb600 49%, #ed9f19 77%, #e9b03f 100%);
background: -ms-linear-gradient(top, #fefdc4 0, #fbb600 49%, #ed9f19 77%, #e9b03f 100%);
background: linear-gradient(to bottom, #fefdc4 0, #fbb600 49%, #ed9f19 77%, #e9b03f 100%)
}

.beeline-wrap-mini-cabinet .beeline-button
{
position: relative;
text-align: center;
white-space: nowrap
}

.beeline-wrap-mini-cabinet .beeline-button.common label
{
height: 32px;
font-family: Arial, Verdana;
line-height: 33px
}

.beeline-wrap-mini-cabinet .beeline-button .disabled, .beeline-wrap-mini-cabinet .beeline-button.common input, .beeline-wrap-mini-cabinet .beeline-button.disabled input, .beeline-wrap-mini-cabinet .beeline-button.disabled label, .beeline-wrap-mini-cabinet .beeline-button.sub input
{
display: none
}

.beeline-wrap-mini-cabinet .beeline-button .disabled
{
height: 34px;
padding: 0 20px;
cursor: default;
white-space: nowrap;
color: #c8c8c8;
border: 1px solid #c8c8c8;
-webkit-border-radius: 24px;
-moz-border-radius: 24px;
border-radius: 24px;
background: 0 0;
box-shadow: none;
text-shadow: none;
font-family: Arial, Verdana;
font-size: 15px;
line-height: 36px
}

.beeline-wrap-mini-cabinet .beeline-button.sub .disabled
{
height: 28px;
padding: 0 14px;
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
border-radius: 12px;
font-family: Arial;
font-size: 12px;
line-height: 28px
}

.beeline-wrap-mini-cabinet .beeline-button.sub input, .button.sub label
{
background: #fafafa;
background: -moz-linear-gradient(top, #fafafa 0, #c8c8c8 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fafafa), color-stop(100%, #c8c8c8));
background: -webkit-linear-gradient(top, #fafafa 0, #c8c8c8 100%);
background: -o-linear-gradient(top, #fafafa 0, #c8c8c8 100%);
background: -ms-linear-gradient(top, #fafafa 0, #c8c8c8 100%);
background: linear-gradient(to bottom, #fafafa 0, #c8c8c8 100%)
}

.beeline-wrap-mini-cabinet .beeline-button.common label, .beeline-wrap-mini-cabinet input[type=submit], .beeline-wrap-mini-cabinet input[type=button]
{
background: #ffe100;
background: -moz-linear-gradient(top, #ffe100 0, #f7a700 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffe100), color-stop(100%, #f7a700));
background: -webkit-linear-gradient(top, #ffe100 0, #f7a700 100%);
background: -o-linear-gradient(top, #ffe100 0, #f7a700 100%);
background: -ms-linear-gradient(top, #ffe100 0, #f7a700 100%);
background: linear-gradient(to bottom, #ffe100 0, #f7a700 100%)
}

.beeline-wrap-mini-cabinet .beeline-button.common label:hover, .beeline-wrap-mini-cabinet input[type=button]:hover
{
color: #282828;
background: #fefdc4;
background: -moz-linear-gradient(top, #fefdc4 0, #fbb600 49%, #ed9f19 77%, #e9b03f 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fefdc4), color-stop(49%, #fbb600), color-stop(77%, #ed9f19), color-stop(100%, #e9b03f));
background: -webkit-linear-gradient(top, #fefdc4 0, #fbb600 49%, #ed9f19 77%, #e9b03f 100%);
background: -o-linear-gradient(top, #fefdc4 0, #fbb600 49%, #ed9f19 77%, #e9b03f 100%);
background: -ms-linear-gradient(top, #fefdc4 0, #fbb600 49%, #ed9f19 77%, #e9b03f 100%);
background: linear-gradient(to bottom, #fefdc4 0, #fbb600 49%, #ed9f19 77%, #e9b03f 100%)
}

.beeline-button.common label:active, .beeline-wrap-mini-cabinet input[type=submit]:active, input[type=submit]:active
{
-webkit-box-shadow: inset 0 1px 3px 1px rgba(0,0,0,.3);
-moz-box-shadow: inset 0 1px 3px 1px rgba(0,0,0,.3);
box-shadow: inset 0 1px 3px 1px rgba(0,0,0,.3)
}

.beeline-button input, .beeline-button.common label, input[type=submit], input[type=button]
{
position: relative;
margin-bottom: 3px;
padding: 0 21px;
cursor: pointer;
text-align: center;
white-space: nowrap;
color: #282828;
border: 1px solid #f0cda7;
border-top-width: 0;
-webkit-border-radius: 24px;
-moz-border-radius: 24px;
border-radius: 24px;
outline: 0;
-webkit-box-shadow: 0 3px 0 0 #bc804a;
-moz-box-shadow: 0 3px 0 0 #bc804a;
box-shadow: 0 3px 0 0 #bc804a;
text-shadow: 0 1px 1px #fee215;
font-size: 15px
}

.beeline-button.sub button, .beeline-button.sub input[type=submit], .beeline-button.sub input[type=button], .beeline-button.sub input[type=reset], .beeline-button.sub label
{
height: 30px;
margin-bottom: 0;
padding: 0 14px;
cursor: pointer;
color: #282828;
border: 1px solid #C8C8C8;
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
border-radius: 12px;
-webkit-box-shadow: none;
-webkit-box-shadow: 0 2px 0 0 #fff;
-moz-box-shadow: none;
-moz-box-shadow: 0 2px 0 0 #fff;
box-shadow: none;
box-shadow: 0 2px 0 0 #fff;
text-shadow: 0 1px 0 #fff;
font-family: Arial;
font-size: 12px;
line-height: 30px
}

.beeline-button.sub input:hover, .beeline-button.sub label:hover
{
background: #fff;
background: -moz-linear-gradient(top, #fff 0, #f0f2f1 45%, #e0dcdb 50%, #c8c8c8 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(45%, #f0f2f1), color-stop(50%, #e0dcdb), color-stop(100%, #c8c8c8));
background: -webkit-linear-gradient(top, #fff 0, #f0f2f1 45%, #e0dcdb 50%, #c8c8c8 100%);
background: -o-linear-gradient(top, #fff 0, #f0f2f1 45%, #e0dcdb 50%, #c8c8c8 100%);
background: -ms-linear-gradient(top, #fff 0, #f0f2f1 45%, #e0dcdb 50%, #c8c8c8 100%);
background: linear-gradient(to bottom, #fff 0, #f0f2f1 45%, #e0dcdb 50%, #c8c8c8 100%)
}

.beeline-button.sub input[type=submit]:active, .beeline-button.sub input[type=button]:active, .beeline-button.sub input[type=reset]:active, .beeline-button.sub label:active
{
-webkit-box-shadow: inset 0 1px 2px 1px rgba(74,75,106,.7);
-moz-box-shadow: inset 0 1px 2px 1px rgba(74,75,106,.7);
box-shadow: inset 0 1px 2px 1px rgba(74,75,106,.7)
}

.beeline-mini-cabinet
{
text-align: center;
margin: 0 auto
}

.beeline-mini-cabinet-block .constr
{
margin-bottom: 15px
}

.beeline-wrap-mini-cabinet
{
position: fixed;
background: #f7a700;
background: -moz-linear-gradient(left, #f7a700 0, #ffe100 100%);
background: -webkit-gradient(linear, left top, right top, color-stop(0, #f7a700), color-stop(100%, #ffe100));
background: -webkit-linear-gradient(left, #f7a700 0, #ffe100 100%);
background: -o-linear-gradient(left, #f7a700 0, #ffe100 100%);
background: -ms-linear-gradient(left, #f7a700 0, #ffe100 100%);
background: linear-gradient(to right, #f7a700 0, #ffe100 100%);
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
-khtml-border-radius: 5px;
border-radius: 5px;
padding: 2px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
max-width: 566px
}

.beeline-wrap-mini-cabinet:before
{
content: '';
position: absolute;
display: block;
width: 24px;
height: 10px;
left: 50%;
margin-left: -12px;
top: -8px;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAKCAYAAACuaZ5oAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQtJREFUeNpiZCASfD+uLQCkDEBsTsurB4jVx0ik4SCD9wOxAFToAhA7Ai36QEgvEymGM7JLMzCy8DJAfbIfKKdAkQXIhjOLBjCwG+5kYNNdy8DErQGz5DxUDelBhGw4yEA2rfkMDMy8EMm/nxl+XUtk+Pf1Boj3ARpcF4i2AK/hMECkJRhB9P2YdgHDf4bzeA0HAaAYSA4aXALQOEnA6gOgoSAFAUBcD8TgiGMWdmJgVW7Fbjhun0BSGCPDRCB9gNPi6gNGoOH/UWwEphIWmSwGZslYBlLAnyfTGP6+WMzw/89nlICHW8DEZ8rALOTEAEotDCy8DGQBoG/+vt7A8Pf9PoZ/n06DhQACDAC5Z2bZ/hX6/QAAAABJRU5ErkJggg==) no-repeat
}

.beeline-wrap-mini-cabinet .beeline-close-short
{
position: absolute;
right: 10px;
top: 14px;
display: block;
cursor: pointer;
width: 9px;
height: 9px;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHFJREFUeNpsj9ENwCAIRJEx8QdG6CSOoD/O1xEsl2hDiCSXKPcgB4vI69K1FmWhD5+J6HH1WqtSqP3v8HnOOfxhEQyAwS9YmwwM6QHg/dAG+waGA3b6nDLo2RQz8iWD5YwFZ8aQl+sMm1oGUOHq9gkwABt/T7Nta20FAAAAAElFTkSuQmCC) no-repeat
}

.beeline-mini-cabinet *
{
font-family: Arial;
font-size: 13px;
color: #282828
}

div.beeline-mini-cabinet
{
display: block;
font-family: Arial;
font-size: 13px;
color: #282828;
padding: 12px 35px 15px;
background: #fff;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
-khtml-border-radius: 4px;
border-radius: 4px
}

.beeline-mini-cabinet:before
{
content: '';
display: block;
position: absolute;
left: 11px;
top: 8px;
width: 15px;
height: 25px;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAZCAYAAADuWXTMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABNVJREFUeNpclGtsFFUYht85c+ay29nd7rbLVralrS1toKQNt0qopMQLieAtYExAYmKiYpAfpgG0MQgkBi/EP6KJv5CooMGkxgAaBIMBWiLQUAlCse32Qlva3bY7e5/7eFqMSfmSyZyZnOd83/ee9xxuIDYAcBzyeQ1aLlFbSA9tCnnHGhsqExHX0olLvemOi2X9iVTxcL6QvbF61arrVVVVsG0b1DA0Bos4//ul3adOd3w4fj8tvfaijYZdEjgTMLLAd8dNDN3nIEkCcrnC+1uC3kOGYYCWFPWBM3pfGOj5/nA84WMTJNcjmKMw6LSTd6xMypHyOl9DKfUSV8cy/8l9teLkeZ0PXCWiXC2U+rsPHn7PwNOrtEE1Yz2XT5p1uQljuTqhrb4Xs5oSqlNn29aB/a/b1ubNiiy5A+8qogoakE43wO5vkqMSdr1RuUcJ0TNeEsNsFso7sCy45RHf2I6Xlx188onpZSD3XgImmomW8NG+vuuLklP+OdHiU/nJxnrA1oIYTFfAKhSgyQqe31SB4ogfP/92ZzSXHEV5WaDMI4QX0bYPRvTxhH+Whc8nBf0+ES0tK+AkG6AmZ9DQsAQN4X70DU7gl3NZ8dIVFQvCIa486hIyNilMitR0bVbf4mpp24H2dWh9vB6Uc+D18JAliuaVUbSuKQ/ZZuqpYMADv8JPe2SM0o3PbOj982pP7+KqoSX73ylsji6lRztOLhy/cBmiVkjn+u72kpptWqgqGNvQvn2qbu8XEnKac0ZNqkkuPpPCH2dPtKyoPXKspqm0lu0bvjzi4KMjs1kdJOPjuPC5gMb1UYBw+KnD/PrjE963vTIpUBdANBrs5DVhXWJA2huOkPUBOVO5/VkjVFlO8U8sgnQqPYykeUfPuEe9hvYjTxXwPA/quu6c1RziTsTHxTZiGXhli9DOBd1DcNk+ZYlhDRdtLCSt2zybSwj+DyrLEngqYHwSiGeLMGWEQCcKVJ1JwiPYUCQijAzLipqmKBZUTCdSgOuwhAzes3s3kjMJjAwLKBj34NgcOMIrHAgc14Yg8Jyi8BFJFhkTQpEnjCX1JQ/KvtLV+WBARUgCU4A9hHOzlmlBEAXMtlXzaEWmuNg/57jowigymQwMwwQ9cewzzAvOAzd32kD2B7aID3besUX59hQhHpDSrfhrKIieG9cfHMm6uur5MLzgSYRSh7IxU8ckFmZcPS3tYhZcB2HsIhONMM9boN8eP/UQLLBDEaO8GWb9iszoFq9qTW8VlztdHvHCr51dXTtNw+wMhxdcoTf/7p+HUspjcChu3bzlQNdT8BcHqGNfa/MrPRvr6xZfunqtu72kpOT+mjWPNVJ1emQePFsS7Izl4Schyw6qy0TmcxMcL4mtqwM+Ny8bGTUuYfgk4Ya6m/FwcMTdw3PGpzxnQ7INyLzMehQcpSQyY6anSm0NPbCwglYufeRhlKVn9xpRgQJ76+xb51k1IkF+olSUJDCdp/Qs59KdbcY8lG0rirxQQn4ZgiPAsHi0Lhc+aalTb3FU5C3dyaRmaHdWLwO1UT8P5plgd2NjhVhsGISncOHol3u8x/ZtzfeubXbgFNgf5z9xd7z56jzY4/Hg7Nlz34yNxlZKIr+wSPF+VVFV39uvBrAWvXPX1Wxns/GvAAMAbQ0rPdr58eYAAAAASUVORK5CYII=) no-repeat
}

.beeline-buttons
{
margin: 20px 0 0;
text-align: center;
display: block
}

.beeline-buttons>*
{
margin: 0 0 0 15px;
vertical-align: middle
}

.beeline-buttons>:first-child
{
margin: 0
}

.beeline-button.sub input[type=submit]:active, .beeline-button.sub input[type=button]:active, .beeline-button.sub label:active
{
-webkit-box-shadow: inset 0 1px 2px 1px rgba(74,75,106,.7);
-moz-box-shadow: inset 0 1px 2px 1px rgba(74,75,106,.7);
box-shadow: inset 0 1px 2px 1px rgba(74,75,106,.7)
}

.beeline-button.sub input:active, .beeline-button.sub input:focus
{
background: #c8c8c8;
background: -moz-linear-gradient(top, #c8c8c8 0, #fafafa 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #c8c8c8), color-stop(100%, #fafafa));
background: -webkit-linear-gradient(top, #c8c8c8 0, #fafafa 100%);
background: -o-linear-gradient(top, #c8c8c8 0, #fafafa 100%);
background: -ms-linear-gradient(top, #c8c8c8 0, #fafafa 100%);
background: linear-gradient(to bottom, #c8c8c8 0, #fafafa 100%)
}

И из-за криворукости программистов на страницу добавляется и такой код:

.beeline-button input, .beeline-button.common label, input[type=submit], input[type=button]
{
position: relative;
margin-bottom: 3px;
padding: 0 21px;
cursor: pointer;
text-align: center;
white-space: nowrap;
color: #282828;
border: 1px solid #f0cda7;
border-top-width: 0;
-webkit-border-radius: 24px;
-moz-border-radius: 24px;
border-radius: 24px;
outline: 0;
-webkit-box-shadow: 0 3px 0 0 #bc804a;
-moz-box-shadow: 0 3px 0 0 #bc804a;
box-shadow: 0 3px 0 0 #bc804a;
text-shadow: 0 1px 1px #fee215;
font-size: 15px
}


Этот код добавляет к любым кнопкам типа button и submit свои CSS правила и кнопки начинают выглядеть по-другому.



Оригинальные CSS правила полностью затерлись:



В качестве примера сайт до и после работы скрипта от Билайн:





UPD: «Извинения» от представителя оператора связи, который вмешивается в трафик абонентов: habrahabr.ru/post/262687/#comment_8510733

Комментарии (82)


  1. ibKpoxa
    15.07.2015 15:35
    +25

    Скоро будут кнопки по ГОСТу :)


  1. MaximChistov
    15.07.2015 15:36
    +25

    эпик просто xD


  1. AlexanderS
    15.07.2015 15:36
    +23

    Да это беспредел!)


  1. Yavanosta
    15.07.2015 15:42
    +31

    Объясните пожалуйста, какие вообще документы позволяют им это делать? Не вставляют же они свои тулбары просто потому что могут? Наверняка этому есть какое-то юридическое обоснование, но я не могу его придумать.


    1. VBKesha
      15.07.2015 15:52
      +32

      Скорей надо просить документы которые им запрещают это делать. Иначе они будут встраивать просто потому что могут.


    1. EnterSandman
      15.07.2015 16:47
      +4

      Договор об оказании услуг?


    1. heart
      16.07.2015 12:49
      +2

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


  1. estum
    15.07.2015 16:13
    +5

    А владельцы сайтов не могут подать иск из-за изменения внешнего вида, функционала или типа того?


    1. crmMaster
      15.07.2015 16:30
      +2

      А закона-то нет.

      В свое время некоторые пользователи ростелекома наблюдали у себя на страницах странную рекламу в местах для ЯД и google adsense. Но начальство телекома ушлых товарищей нашло и наказало, хотя де-юро никто виноват не был


      1. palmich
        15.07.2015 16:37
        +3

        www.zakonrf.info/uk/274 — если будет ущерб


        1. crmMaster
          15.07.2015 18:45
          +2

          Вот интересно, каким образом посчитать ущерб от убогих желтых кнопок.

          Ну кроме морального ущерба за пострадавшее чувство прекрасного


          1. palmich
            15.07.2015 18:50
            +2

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


            1. akazakow
              16.07.2015 13:16

              Только для этого нужно очень постараться, чтобы найти электронные торги, работающие не поверх https.


          1. heart
            16.07.2015 12:51

            трафик на не безлимитном интернете — чем не ущерб?


            1. mickvav
              18.07.2015 22:48

              Если трафик до локальных билайновских сайтов не считается — только прибыток получится ;)


          1. KorDen32
            16.07.2015 13:34

            Ну, например если есть сайт, на котором CSS от билайна жестко ломает верстку. Потом идут фантазии на тему кнопок «Удалить» и «Сохранить», которые с CSS будут наезжать друг на друга или еще чего, таким образом нажатие на сохранение вызывает удаление…


  1. en1gma
    15.07.2015 16:37
    +12

    а кто платит за скачивание скрипта, который весит 152 килобайта?


    1. Yavanosta
      15.07.2015 16:57
      +32

      Попробуйте угадать.


      1. Sergey-S-Kovalev
        15.07.2015 18:57
        +6

        Абонент что ли?!


        1. Yavanosta
          15.07.2015 21:31
          +3

          Лично я не знаю. Операторы часто делают исключения в тарификации для своих ресурсов, но сделано или нет в данном случае надо проверять. Причём отдельно интересно сделано ли исключение в роуминге, особенно международном.


          1. Stalker_RED
            16.07.2015 13:26
            +1

            А еще на отрисовку этих желтых кнопок тратится заряд батареи!


  1. ostapbender
    15.07.2015 18:00

    Добавление в Restricted Sites не помогает?


  1. gibson_dev
    15.07.2015 18:09
    +1

    Используем VPN и никакие операторы и блокировки не страшны ( у самого все идет через vpn в европу).


    1. Rondo
      15.07.2015 18:25

      И сколько стоит вам такое удовольствие?


      1. gibson_dev
        15.07.2015 18:27
        +2

        150р в месяц за VPS ну и ресурсов на другие задачи отсается


        1. leonid239 Автор
          15.07.2015 19:29

          Можно даже и дешевле найти. Только для VPN подойдет сервер вообще почти с любыми параметрами.


          1. Evengard
            16.07.2015 10:25

            OpenVZ не все и не всегда. Есть хитрые OpenVZ со включённым tun драйвером, но… Без nat-таблицы iptables! Без неё фиг настроишь VPN-гейтвей


      1. akazakow
        16.07.2015 13:19
        +1

        Я держу в Германии сервер за 5 евро в месяц. Стабильно раздаёт VPN для ~10 человек (друзьям тоже даю доступ), плюс, в качестве бонуса, получаю сервер резервных копий для моего основного сервера.


        1. KorDen32
          16.07.2015 13:37

          Сколько в среднем суммарная максимальная скорость и пинг? У меня в Нидерландах за $5, пользуются четыре человека, скорость макс. около 16-20 мбит/с по OpenVPN выходит, пинги до сервера около 55мс


          1. Vindicar
            16.07.2015 15:16
            +1

            Нашел недурной VPS в Латвии. Пинг и скорость хорошие (не замерял, каюсь), иногда смотрю ютуб и только потом спохватываюсь что VPN был включен. Правда, я обычно не заворачиваю туда весь трафик, а делаю свой PAC-файл на базе antizapret. До кучи развернул там инстанс owncloud.
            Минимальная конфигурация 12 евро в год, особенно нравится что каждый параметр (CPU/RAM/HDD/траффик) можно изменять отдельно.


          1. akazakow
            16.07.2015 15:44
            +1

            image
            У меня тоже OpenVPN работает.


        1. artspb
          21.07.2015 16:41

          Германия — не самая лучшая страна для VPN, у них с YouTube заморочки: огромное количество видео недоступно.


          1. akazakow
            21.07.2015 18:51

            Вполне возможно, но в Германии у меня сервер больше по историческим причинам, а менять достаточно проблематично. Да и на заблокировнные ролики я еще не натыкался, видимо, не то смотрю. =)


  1. saggid
    15.07.2015 19:49
    -1

    Вообще, я лично пользуюсь Билайном и, в целом, доволен всем: и ценами, и интернетом, и связью. Единственное, разные глупые акции с предложениями положить сколько-то рублей на счёт, чтобы потом общаться сколько-то времени по сниженной цене, и т.д. немного раздражают.

    Но такие выпады, конечно, выглядят реально смешно и глупо. И что за аналитики такие у них, интересно, сидят, что каждый их мозговой штурм завершается на решении реализовать очередную такую глупую и смешную «фичу» для своих пользователей интернета?)


    1. bertmsk
      21.07.2015 13:27

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


  1. Aclz
    15.07.2015 20:13

    Можно попробовать разобраться. А это во всех регионах так, или какое-то конкретное региональное отделение таким балуется?


  1. sayber
    15.07.2015 20:17

    Цены у билайна бешеные, качество не ок (Москва).
    Поэтому лучше пользовать более качественными операторами.

    А еще видно часто такие сообщения: билайн заблокировал страницу.…
    Открываю через своих провайдеров, все работает. Открываю сайт, что бы проверить урл (мосгорсуд блокировал или нет), там урла нет.
    Почему билайн блокирует, не понятно.

    помните историю с суицидом и github? Билайн и Росстелеком блокирнули сайт целиком.
    Благо другие провайдеры имеют мозги и средства, блокировали только страницу с тем репозитарием.

    Это я исключительно про Москву, как в регионах, не знаю.


    1. MaximChistov
      15.07.2015 20:21
      +11

      помните историю с суицидом и github? Билайн и Росстелеком блокирнули сайт целиком.

      а как заблокировать https не целиком не взламывая траффик?
      Благо другие провайдеры имеют мозги и средства, блокировали только страницу с тем репозитарием.

      подменили вам сертификат гитаба, молодцы-то какие!


      1. vanxant
        16.07.2015 02:10
        -3

        >а как заблокировать https не целиком не взламывая траффик?
        rtfm tls sni


        1. monah_tuk
          16.07.2015 04:25
          +2

          Но ведь в SNI можно передавать только доменное имя и сделано это для того, что бы на виртуальном хостинге несколько доменов могли разные сертификаты дать. Как они узнают страницу? Или я неправильно понял документацию?


        1. MaximChistov
          16.07.2015 09:21
          +2

          сами бы его rtfm'нули для начала :D


  1. Beltoev
    15.07.2015 22:05
    +2

    И из-за криворукости программистов на страницу добавляется и такой код...

    А, по-моему, это вполне целенаправленно сделано. Не знаю, правда, что за тараканы у них там в голове


  1. Methos
    15.07.2015 23:22
    +4

    Хорошие же кнопки, яркие, заметные =)


  1. betal
    16.07.2015 02:13
    +14

    А по ФЗ 272-274 УК Нельзя пропустить их?

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


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


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


    Предлагаю всем и каждому отправлять заявление в прокуратуру, по данному вопросу, они должны проверять законность данных действий. Не хотелось бы создавать прецедент, разрешающий операторам всовывать рекламу в трафик, тем более данные действия нарушают логику работы программ для ЭВМ.


    1. Mikhail_dev
      16.07.2015 09:22
      +4

      А в добавок еще и бойкотировать Билайн.


      1. Mikhail_dev
        17.07.2015 11:38

        И кто-то втихаря сливает мне карму. Даже теряюсь в догадках, кто это может быть =)


    1. Poytu
      17.07.2015 11:00

      Шаблон заявления можете составить?


  1. gre
    16.07.2015 09:19
    -2

    Кросс-коммент из соседней ветки:

    Странно, что автор не написал апдейт, хотя ему Билайн в твиттер ответил 19 часов назад.




    Ну немного информации по приведённой команде:
    • «Мини-кабинет» – это сервис самообслуживания в браузере, с помощью которого можно узнавать баланс, остаток интернет трафика, управлять услугами связи и менять тарифные планы, а также получать ссылки на полезные сервисы от «Билайн»
    • Использование сервиса бесплатно, интернет-трафик не тарифицируется
    • Услуга предоставляется абонентам только в филиалах Оператора Северо-Западного региона: Петрозаводском, Архангельском, Вологодском, Мурманском, Новгородском, Псковском, Санкт-Петербургском
    • Данная услуга не предоставляется в роуминге
    • Услуга доступна только для абонентов использующих Браузер Safari версии 6 и выше на мобильных устройствах c iOS, Браузер Chrome версии 30 и выше на мобильных устройствах с операционной системой iOS и Android, а также Браузер Internet Explorer версии 9 и выше на персональном компьютере с операционной системой Windows, Браузер Safari версии 6 и выше на персональном компьютере с операционной системой MAC OS и Браузер Chrome версии 30 и выше на персональном компьютере с операционными системами Windows и MAC OS при использовании USB-модема с телефонным номером «Билайн»


    1. john_samilin
      16.07.2015 10:30
      +12

      Да, классно, чтобы не воспользоваться нужно начать пользоваться


    1. leonid239 Автор
      16.07.2015 11:34
      +5

      Я ровно так и сделал: мини кабинет у меня был отключен, однако скрипт все равно добавлялся на любую страницу.


    1. iliar
      21.07.2015 11:31
      +5

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

      Скажите вы раньше кредитные карточки в аэропортах на впаривали? Они тоже просили заполнить анкету, дать разрешение на обработку персональных данных, подписать договор на кучу страниц со словами «вы сейчас возьмите карточку, а потом если она вам не нужна можете просто ей не пользоваться».

      Так вот, хотелось бы донести простую мысль, для отказа от услуги («услуги», слово то какое пафосное, надо бы еще спам переименовать в «услуга по информированию о способах увеличения члена») я не должен нажимать «я согласен с правилами оказания услуги», я должен нажимать на кнопку «Нет, мне это не интересно, не показывайте мне это больше».


  1. ComodoHacker
    16.07.2015 10:36
    +1

    Надо добавлять этот шлак в RU Adlist и пропагандировать использование блокировщиков.


  1. PsyHaSTe
    16.07.2015 12:19
    +1

    А в чем смысл такой кнопки? Просто если добавление трафика и мейл-поисковика еще вписывается в задачу «Заработать любой ценой», то какой сакральный смысл тупо ломать дизайн, причем только кнопок? Почему бы таблицы не сделать желто-черными, чересстрочно?


    1. leonid239 Автор
      16.07.2015 12:25

      Почти уверен, что это сделано ненамеренно и CSS правила изначально писались только для тулбара, но из-за ошибки правила стали распространяться на все кнопки в html коде.


      1. EkaterinaLebedeva
        22.07.2015 16:42
        -2

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


        1. veam
          22.07.2015 17:31
          +2

          Это была программная ошибка, поправили.

          Ага, поправили мелкую ошибку, а по-хорошему должны были убрать свой анальный зонд полностью.


        1. leonid239 Автор
          22.07.2015 21:59
          +5

          Екатерина, правильно ли я понимаю, что Вы подтверждаете, что оператор связи вмешивался в трафик абонентов без их согласия и изменял внешний вид html страницы?


          1. psman
            24.07.2015 18:00

            Правильно понимаете, факты же.


  1. kvaki
    16.07.2015 12:23

    Все очень плохо :(


  1. kvaki
    16.07.2015 12:29

    Возможно они думают так:
    i72.fastpic.ru/big/2015/0716/fa/14a82156d062debac1eb8724040e3dfa.jpg


    1. Mithgol
      17.07.2015 09:07

      [JPG vs. PNG]


      1. Sergey-S-Kovalev
        17.07.2015 12:03

        Уместнее картинка с подельником Шерхана.


    1. Nashev
      28.07.2015 10:49

      Ваша картинка: image


  1. IonDen
    16.07.2015 12:36

    Вот сейчас пользуюсь МТС-м и с содроганием думаю, а что если и он начнет что-то такое делать? Придется же уходить. Но куда? Я в свое время бежал на МТС с Мегафона, обратной дороги нет. Этот пост полностью закрыл мне дорогу в билайн. Остаются только Yota и Tele2, даже хз, какие там у них тараканы.


    1. KorDen32
      16.07.2015 13:23
      +2

      Я вас возможно разочарую

      10.11.2014, 4pda


      1. darkdaskin
        16.07.2015 21:05

        Это вроде как фишка Оперы. Помню, когда у меня ещё был смартфон на Symbian, первыми ссылками всегда прописывались несколько сайтов МТС. Причём если их удалить или заменить на свои, через некоторое время всё возвращалось обратно.


        1. KorDen32
          16.07.2015 21:21

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


    1. vlivyur
      26.07.2015 12:52

      У МТС есть другая беда: в случае каких-то косяков редиректит на ЛК, а исходной ссылки в браузере больше нет. Сегодня случилось: первой ссылкой стала http://interceptor.mts.ru/?REDIRECT_PACKAGE=redirect_zamena_sim (interceptor порадовал), а по ней уже на ЛК переходит. И 15 одинаковых вкладок в браузере.


  1. Poytu
    17.07.2015 10:58
    +1

    Написал в Билайн, приложил ссылки на эту статью.

    Ответ:
    «Опишите, пожалуйста, ситуацию более подробно с указанием сайтов, в которые „внедряется Билайн“
    Искренне Ваша»


    1. Poytu
      23.07.2015 08:37
      +2

      Развернутый ответ поддержки.

      «Услуга «Тулбар» или «Мини-Кабинет» предназначена для предоставления абоненту актуальной информации о балансе и возможности управления своими услугами.
      За период тестовой эксплуатации услуга «Тулбар» получила положительный отзыв от большого количества абонентов Билайн (были проведены различные usability-исследования).

      Перед началом предоставления бесплатной услуги (трафик не тарифицируется), «Тулбар» выводит на экран в браузере оферту с описанием услуги и предложением ее подключить.
      Услуга считается подключенной только после того, как пользователь принял условия соглашения.
      Описание услуги также доступно на официальном сайте Билайн.

      В случае если после принятия оферты пользователь решил отказаться от услуги ему достаточно отключить ее при помощи кнопки «отключить навсегда».
      Также услугу «Тулбар» возможно отключить обратившись в Call-Center «Билайн».

      Вставка контента оператором не меняет исходный код web-ресурсов в интернете и, с точки зрения закона, является абсолютно легитимной при использовании для контакта с абонентами.
      Хотелось бы отметить, что многочисленные проверки показали, что система не влияет на скорость загрузки web-страниц в интернете, так как код услуги запрашивается браузером либо в конце загрузки web-ресурса, либо параллельным способом.
      В большинстве случаев, жалобы абонентов были связаны с запрашиваемыми страницами либо качеством сети, а не самой услугой.

      Данный код ни в коей мере не может использоваться для мошеннических действий в виду того, что любая конфиденциальная и наиболее важная информация пользователя в интернете всегда передается с использованием зашифрованного протокола HTTPS, при котором данная услуга не задействована (пункт 4.1 условий предоставления услуги «Мини-кабинет»).
      В случае использования открытого протокола HTTP вся информация в любом случае проходит через сеть оператора в открытом виде.
      При этом, информация о пользователе никогда не выходит за рамки операторской инфраструктуры и данное требование было согласованно с внутренней службой безопасности.

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

      Всего Вам доброго.»


      1. landy
        24.07.2015 11:35
        +2

        (были проведены различные usability-исследования)

        ну я молчу тут, так и представляю толпу инженеров, дизайнеров, проводящих иследования, оставляющих свою оценку :)
        а в итоге — пара руководителей отделов и какой нибудь продакт-менеджер глянули… «а, ну сойдет».

        Услуга считается подключенной только после того, как пользователь принял условия соглашения.

        так понимаю, что соглашением является факт открытия в браузере оферты?
        или пока не ответил да/нет, этот тулбар так и «висит», что также можно приравнять к тому же соглашению. :)

        достаточно отключить ее при помощи кнопки «отключить навсегда»

        «Урий, Урий, где у него кнопка?» ;)

        Хотелось бы отметить, что многочисленные проверки показали

        В большинстве случаев

        Большинство абонентов довольно использованием услуги

        Практически во всех случаях у абонентов

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

        З.Ы. Poytu, это не к вам вопросы конечно, а надеяться на ответ представителей Билайна врятли придется :)


      1. el777
        24.07.2015 14:29
        +5

        Вставка контента оператором не меняет исходный код web-ресурсов в интернете и, с точки зрения закона, является абсолютно легитимной

        Ответ уборщица писала?
        Я не верю, что даже недоучившийся юрист может путать понятия:
        Легальный — соответствующий закону.
        Легитимный — общественно признанный.

        «Общественно признанный с точки зрения закона» — мало того, что вранье, так и звучит как бред.
        Как раз общественность-то и возмущается и не хочет принимать эту штуку.


      1. amarao
        25.07.2015 14:35

        tl;dr — «Ответ поддержки: проблемы нет, всё зашибись»


  1. nazargulov
    21.07.2015 17:48
    -11

    Ой, а мы на DPI и не такое делали )) Самое сложное, дорогие юзеры, это ваши tcp-сессии склеивать, тереть gzip из header'ов и хреновы chunk'и собирать, ха -ха))


    1. NightmareZ
      24.07.2015 13:56
      +6

      Ну ты ведь в курсе, что для тебя отдельный чан в аду уже готов?


      1. nazargulov
        01.08.2015 13:57

        Да не. Чан был бы нужен, если бы не склеили обратно, или пакеты с ретрансмитом приходили. А когда все аккуратно, когда из кода четко вырезается div..)


    1. lomalkin
      24.07.2015 21:27

      А чем вам gzip не угодил?


      1. nazargulov
        01.08.2015 03:50

        Ну а че, нам это еще и разархивировать самим что ли? Поставил четыре пробела вместо gzip и гуд)


        1. dginz
          06.08.2015 19:57

          Вот никогда не понимал, а почему нельзя поменять Content-Length и не заниматься вот таким «четыре пробела вместо»?


    1. Evengard
      09.08.2015 20:42

      Пост про разработку такой DPI был бы весьма любопытен.


  1. M_Muzafarov
    14.08.2015 13:34

    Захожу в ЛК и четко вижу возможность подключения такого тулбара. Сейчас отключен. За более чем два года пользования интернетом Билайна в разных точках России предложения о его подключении не видел.

    Если пользователь сам подключает услугу и соглашается, чтобы тулбар выводился во время просмотра сайтов — откуда нападки на внедрение кода? На то он и тулбар в конце-концов, чтоб поверх выводиться.


    1. leonid239 Автор
      14.08.2015 13:54

      У меня такой возможности не было, тулбар включился автоматически без каких-либо запросов.