Не так давно я написал топик про Билайн и их автоматическое добавление тулбара с поиском mail.ru. Тогда в html код добавлялся java-script файл, который в свою очередь добавлял плашку с реферальным поиском mail.ru. Прошло 2 месяца и Билайн решил делать все по-другому.
Вчера, просматривая сайты через мобильный интернет, я увидел, что на них стал отображаться обновленный тулбар от Билайн. Как его отключить было непонятно: кнопки закрытия не было, можно было только убрать его наверх, но все равно он виднелся на экране. Пришлось принять соглашение на продажу своих органов и только после этого появилась волшебная кнопка «Удалить тулбар навсегда».
Я подумал, что на этом все закончилось, но как оказалось — я ошибся.
Просматривая интернет страницы я увидел, что кнопки на сайтах стали выглядеть по-другому: они стали больше и желтые. Очень удивился, но не придал значения. Однако я был еще больше удивлен, когда на моих собственных сайтах кнопки тоже поменяли вид.
Сразу вспомнил про Билайн и начал искать причину. Причина, естественно, оказалась в операторе связи и на этот раз в каждую интернет страницу добавляется уже другой код. Перед закрывающимся тегом html билайн добавляет следующий скрипт: tb.beeline.ru/Scripts/App/AnchorCompiled.min.js
Скачать его можно только из сети мобильного интернета билайн.
Файл весит 152 килобайта и представляет из себя jQuery версии v1.10.2 и дополнительный код от программистов билайн.
Не стал особо вдаваться в то, что делает этот код, напишу лишь результат: на страницу добавляется огромное количество CSS:
{
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)
Yavanosta
15.07.2015 15:42+31Объясните пожалуйста, какие вообще документы позволяют им это делать? Не вставляют же они свои тулбары просто потому что могут? Наверняка этому есть какое-то юридическое обоснование, но я не могу его придумать.
VBKesha
15.07.2015 15:52+32Скорей надо просить документы которые им запрещают это делать. Иначе они будут встраивать просто потому что могут.
heart
16.07.2015 12:49+2Не имеют права ни чего вставлять. Есть платный продукт предоставляемый ими — это интернет. Он ни чем не должен отличаться от того, что обычно под этим подразумевают (и если это не оговорено в законодательстве или не предусмотрено договором, как часто делается в последнее время). Все остальное это навязывание услуг. В суде можно даже сыграть на том что этот трафик забивает канал и что более возмутительно — меняет внешний облик страниц. У кого-то и трафик не безлимитный. В любом случае как минимум, есть основания предъявить индивидуальные претензии. Билайн вообще очень часто превышает свои полномочия. Ни кто почему-то по рукам ему не бьет коллективными исками до сих пор.
estum
15.07.2015 16:13+5А владельцы сайтов не могут подать иск из-за изменения внешнего вида, функционала или типа того?
crmMaster
15.07.2015 16:30+2А закона-то нет.
В свое время некоторые пользователи ростелекома наблюдали у себя на страницах странную рекламу в местах для ЯД и google adsense. Но начальство телекома ушлых товарищей нашло и наказало, хотя де-юро никто виноват не былpalmich
15.07.2015 16:37+3www.zakonrf.info/uk/274 — если будет ущерб
crmMaster
15.07.2015 18:45+2Вот интересно, каким образом посчитать ущерб от убогих желтых кнопок.
Ну кроме морального ущерба за пострадавшее чувство прекрасногоpalmich
15.07.2015 18:50+2ну, например, человек участвует в электронных торгах, и не смог сделать ставку, потому что не смог идентифицировать кнопку, пока разбирался — время ушло.
akazakow
16.07.2015 13:16Только для этого нужно очень постараться, чтобы найти электронные торги, работающие не поверх https.
KorDen32
16.07.2015 13:34Ну, например если есть сайт, на котором CSS от билайна жестко ломает верстку. Потом идут фантазии на тему кнопок «Удалить» и «Сохранить», которые с CSS будут наезжать друг на друга или еще чего, таким образом нажатие на сохранение вызывает удаление…
en1gma
15.07.2015 16:37+12а кто платит за скачивание скрипта, который весит 152 килобайта?
Yavanosta
15.07.2015 16:57+32Попробуйте угадать.
Sergey-S-Kovalev
15.07.2015 18:57+6Абонент что ли?!
Yavanosta
15.07.2015 21:31+3Лично я не знаю. Операторы часто делают исключения в тарификации для своих ресурсов, но сделано или нет в данном случае надо проверять. Причём отдельно интересно сделано ли исключение в роуминге, особенно международном.
gibson_dev
15.07.2015 18:09+1Используем VPN и никакие операторы и блокировки не страшны ( у самого все идет через vpn в европу).
Rondo
15.07.2015 18:25И сколько стоит вам такое удовольствие?
akazakow
16.07.2015 13:19+1Я держу в Германии сервер за 5 евро в месяц. Стабильно раздаёт VPN для ~10 человек (друзьям тоже даю доступ), плюс, в качестве бонуса, получаю сервер резервных копий для моего основного сервера.
KorDen32
16.07.2015 13:37Сколько в среднем суммарная максимальная скорость и пинг? У меня в Нидерландах за $5, пользуются четыре человека, скорость макс. около 16-20 мбит/с по OpenVPN выходит, пинги до сервера около 55мс
Vindicar
16.07.2015 15:16+1Нашел недурной VPS в Латвии. Пинг и скорость хорошие (не замерял, каюсь), иногда смотрю ютуб и только потом спохватываюсь что VPN был включен. Правда, я обычно не заворачиваю туда весь трафик, а делаю свой PAC-файл на базе antizapret. До кучи развернул там инстанс owncloud.
Минимальная конфигурация 12 евро в год, особенно нравится что каждый параметр (CPU/RAM/HDD/траффик) можно изменять отдельно.
artspb
21.07.2015 16:41Германия — не самая лучшая страна для VPN, у них с YouTube заморочки: огромное количество видео недоступно.
akazakow
21.07.2015 18:51Вполне возможно, но в Германии у меня сервер больше по историческим причинам, а менять достаточно проблематично. Да и на заблокировнные ролики я еще не натыкался, видимо, не то смотрю. =)
saggid
15.07.2015 19:49-1Вообще, я лично пользуюсь Билайном и, в целом, доволен всем: и ценами, и интернетом, и связью. Единственное, разные глупые акции с предложениями положить сколько-то рублей на счёт, чтобы потом общаться сколько-то времени по сниженной цене, и т.д. немного раздражают.
Но такие выпады, конечно, выглядят реально смешно и глупо. И что за аналитики такие у них, интересно, сидят, что каждый их мозговой штурм завершается на решении реализовать очередную такую глупую и смешную «фичу» для своих пользователей интернета?)bertmsk
21.07.2015 13:27Сейчас из-за кризиса наблюдается резкое снижение качества сотрудников, принимаемых на работу. Особенно это касается минетжеров, которые придумывают и впаривают вам те самые акции и фичи.
Aclz
15.07.2015 20:13Можно попробовать разобраться. А это во всех регионах так, или какое-то конкретное региональное отделение таким балуется?
sayber
15.07.2015 20:17Цены у билайна бешеные, качество не ок (Москва).
Поэтому лучше пользовать более качественными операторами.
А еще видно часто такие сообщения: билайн заблокировал страницу.…
Открываю через своих провайдеров, все работает. Открываю сайт, что бы проверить урл (мосгорсуд блокировал или нет), там урла нет.
Почему билайн блокирует, не понятно.
помните историю с суицидом и github? Билайн и Росстелеком блокирнули сайт целиком.
Благо другие провайдеры имеют мозги и средства, блокировали только страницу с тем репозитарием.
Это я исключительно про Москву, как в регионах, не знаю.MaximChistov
15.07.2015 20:21+11помните историю с суицидом и github? Билайн и Росстелеком блокирнули сайт целиком.
а как заблокировать https не целиком не взламывая траффик?
Благо другие провайдеры имеют мозги и средства, блокировали только страницу с тем репозитарием.
подменили вам сертификат гитаба, молодцы-то какие!vanxant
16.07.2015 02:10-3>а как заблокировать https не целиком не взламывая траффик?
rtfm tls snimonah_tuk
16.07.2015 04:25+2Но ведь в SNI можно передавать только доменное имя и сделано это для того, что бы на виртуальном хостинге несколько доменов могли разные сертификаты дать. Как они узнают страницу? Или я неправильно понял документацию?
Beltoev
15.07.2015 22:05+2И из-за криворукости программистов на страницу добавляется и такой код...
А, по-моему, это вполне целенаправленно сделано. Не знаю, правда, что за тараканы у них там в голове
betal
16.07.2015 02:13+14А по ФЗ 272-274 УК Нельзя пропустить их?
Неправомерный доступ к охраняемой законом компьютерной информации, если это деяние повлекло уничтожение, блокирование, модификацию либо копирование компьютерной информации, -
Создание, распространение или использование компьютерных программ либо иной компьютерной информации, заведомо предназначенных для несанкционированного уничтожения, блокирования, модификации, копирования компьютерной информации или нейтрализации средств защиты компьютерной информации, -
Нарушение правил эксплуатации средств хранения, обработки или передачи охраняемой компьютерной информации либо информационно-телекоммуникационных сетей и оконечного оборудования, а также правил доступа к информационно-телекоммуникационным сетям, повлекшее уничтожение, блокирование, модификацию либо копирование компьютерной информации, причинившее крупный ущерб, -
Предлагаю всем и каждому отправлять заявление в прокуратуру, по данному вопросу, они должны проверять законность данных действий. Не хотелось бы создавать прецедент, разрешающий операторам всовывать рекламу в трафик, тем более данные действия нарушают логику работы программ для ЭВМ.Mikhail_dev
16.07.2015 09:22+4А в добавок еще и бойкотировать Билайн.
Mikhail_dev
17.07.2015 11:38И кто-то втихаря сливает мне карму. Даже теряюсь в догадках, кто это может быть =)
gre
16.07.2015 09:19-2Кросс-коммент из соседней ветки:
Странно, что автор не написал апдейт, хотя ему Билайн в твиттер ответил 19 часов назад.
@icce Здравствуйте! Нажмите "Начать пользоваться" и после нажмите на иконку кабинета и заблокируйте на время или навсегда. #билайн
— Билайн (@Beeline_RUS) 15 июля 2015
@neptunix @icce А ещё можно набрать команду *110*364#. :) #билайн
— Билайн (@Beeline_RUS) 15 июля 2015
Ну немного информации по приведённой команде:
- «Мини-кабинет» – это сервис самообслуживания в браузере, с помощью которого можно узнавать баланс, остаток интернет трафика, управлять услугами связи и менять тарифные планы, а также получать ссылки на полезные сервисы от «Билайн»
- Использование сервиса бесплатно, интернет-трафик не тарифицируется
- Услуга предоставляется абонентам только в филиалах Оператора Северо-Западного региона: Петрозаводском, Архангельском, Вологодском, Мурманском, Новгородском, Псковском, Санкт-Петербургском
- Данная услуга не предоставляется в роуминге
- Услуга доступна только для абонентов использующих Браузер Safari версии 6 и выше на мобильных устройствах c iOS, Браузер Chrome версии 30 и выше на мобильных устройствах с операционной системой iOS и Android, а также Браузер Internet Explorer версии 9 и выше на персональном компьютере с операционной системой Windows, Браузер Safari версии 6 и выше на персональном компьютере с операционной системой MAC OS и Браузер Chrome версии 30 и выше на персональном компьютере с операционными системами Windows и MAC OS при использовании USB-модема с телефонным номером «Билайн»
leonid239 Автор
16.07.2015 11:34+5Я ровно так и сделал: мини кабинет у меня был отключен, однако скрипт все равно добавлялся на любую страницу.
iliar
21.07.2015 11:31+5Нажмите «Начать пользоваться», и после нажмите на иконку кабинета и заблокируйте на время или навсегда.
Скажите вы раньше кредитные карточки в аэропортах на впаривали? Они тоже просили заполнить анкету, дать разрешение на обработку персональных данных, подписать договор на кучу страниц со словами «вы сейчас возьмите карточку, а потом если она вам не нужна можете просто ей не пользоваться».
Так вот, хотелось бы донести простую мысль, для отказа от услуги («услуги», слово то какое пафосное, надо бы еще спам переименовать в «услуга по информированию о способах увеличения члена») я не должен нажимать «я согласен с правилами оказания услуги», я должен нажимать на кнопку «Нет, мне это не интересно, не показывайте мне это больше».
ComodoHacker
16.07.2015 10:36+1Надо добавлять этот шлак в RU Adlist и пропагандировать использование блокировщиков.
PsyHaSTe
16.07.2015 12:19+1А в чем смысл такой кнопки? Просто если добавление трафика и мейл-поисковика еще вписывается в задачу «Заработать любой ценой», то какой сакральный смысл тупо ломать дизайн, причем только кнопок? Почему бы таблицы не сделать желто-черными, чересстрочно?
leonid239 Автор
16.07.2015 12:25Почти уверен, что это сделано ненамеренно и CSS правила изначально писались только для тулбара, но из-за ошибки правила стали распространяться на все кнопки в html коде.
EkaterinaLebedeva
22.07.2015 16:42-2Вы правы. Это была программная ошибка, поправили. Сейчас изменений в дизайне нет.
veam
22.07.2015 17:31+2Это была программная ошибка, поправили.
Ага, поправили мелкую ошибку, а по-хорошему должны были убрать свой анальный зонд полностью.
kvaki
16.07.2015 12:29Возможно они думают так:
i72.fastpic.ru/big/2015/0716/fa/14a82156d062debac1eb8724040e3dfa.jpg
IonDen
16.07.2015 12:36Вот сейчас пользуюсь МТС-м и с содроганием думаю, а что если и он начнет что-то такое делать? Придется же уходить. Но куда? Я в свое время бежал на МТС с Мегафона, обратной дороги нет. Этот пост полностью закрыл мне дорогу в билайн. Остаются только Yota и Tele2, даже хз, какие там у них тараканы.
KorDen32
16.07.2015 13:23+2Я вас возможно разочарую
10.11.2014, 4pdadarkdaskin
16.07.2015 21:05Это вроде как фишка Оперы. Помню, когда у меня ещё был смартфон на Symbian, первыми ссылками всегда прописывались несколько сайтов МТС. Причём если их удалить или заменить на свои, через некоторое время всё возвращалось обратно.
KorDen32
16.07.2015 21:21Не похоже, у меня никогда не заменялись после удаления, и при нажатии на эту иконку у меня открылась именно моя ссылка. У меня есть стойое подозрение, что та ссылка сгенерировалась из-за специфичного разрешения экрана, которое было передано при запросе для превью
vlivyur
26.07.2015 12:52У МТС есть другая беда: в случае каких-то косяков редиректит на ЛК, а исходной ссылки в браузере больше нет. Сегодня случилось: первой ссылкой стала
http://interceptor.mts.ru/?REDIRECT_PACKAGE=redirect_zamena_sim
(interceptor порадовал), а по ней уже на ЛК переходит. И 15 одинаковых вкладок в браузере.
Poytu
17.07.2015 10:58+1Написал в Билайн, приложил ссылки на эту статью.
Ответ:
«Опишите, пожалуйста, ситуацию более подробно с указанием сайтов, в которые „внедряется Билайн“
Искренне Ваша»Poytu
23.07.2015 08:37+2Развернутый ответ поддержки.
«Услуга «Тулбар» или «Мини-Кабинет» предназначена для предоставления абоненту актуальной информации о балансе и возможности управления своими услугами.
За период тестовой эксплуатации услуга «Тулбар» получила положительный отзыв от большого количества абонентов Билайн (были проведены различные usability-исследования).
Перед началом предоставления бесплатной услуги (трафик не тарифицируется), «Тулбар» выводит на экран в браузере оферту с описанием услуги и предложением ее подключить.
Услуга считается подключенной только после того, как пользователь принял условия соглашения.
Описание услуги также доступно на официальном сайте Билайн.
В случае если после принятия оферты пользователь решил отказаться от услуги ему достаточно отключить ее при помощи кнопки «отключить навсегда».
Также услугу «Тулбар» возможно отключить обратившись в Call-Center «Билайн».
Вставка контента оператором не меняет исходный код web-ресурсов в интернете и, с точки зрения закона, является абсолютно легитимной при использовании для контакта с абонентами.
Хотелось бы отметить, что многочисленные проверки показали, что система не влияет на скорость загрузки web-страниц в интернете, так как код услуги запрашивается браузером либо в конце загрузки web-ресурса, либо параллельным способом.
В большинстве случаев, жалобы абонентов были связаны с запрашиваемыми страницами либо качеством сети, а не самой услугой.
Данный код ни в коей мере не может использоваться для мошеннических действий в виду того, что любая конфиденциальная и наиболее важная информация пользователя в интернете всегда передается с использованием зашифрованного протокола HTTPS, при котором данная услуга не задействована (пункт 4.1 условий предоставления услуги «Мини-кабинет»).
В случае использования открытого протокола HTTP вся информация в любом случае проходит через сеть оператора в открытом виде.
При этом, информация о пользователе никогда не выходит за рамки операторской инфраструктуры и данное требование было согласованно с внутренней службой безопасности.
Большинство абонентов довольно использованием услуги «Тулбар» из-за удобства оперативного получения информации о своих услугах и балансе.
Практически во всех случаях у абонентов, нежелающих пользоваться данной услугой, не возникает проблем с ее отключением.
Всего Вам доброго.»landy
24.07.2015 11:35+2(были проведены различные usability-исследования)
ну я молчу тут, так и представляю толпу инженеров, дизайнеров, проводящих иследования, оставляющих свою оценку :)
а в итоге — пара руководителей отделов и какой нибудь продакт-менеджер глянули… «а, ну сойдет».
Услуга считается подключенной только после того, как пользователь принял условия соглашения.
так понимаю, что соглашением является факт открытия в браузере оферты?
или пока не ответил да/нет, этот тулбар так и «висит», что также можно приравнять к тому же соглашению. :)
достаточно отключить ее при помощи кнопки «отключить навсегда»
«Урий, Урий, где у него кнопка?» ;)
Хотелось бы отметить, что многочисленные проверки показали
…
В большинстве случаев
…
Большинство абонентов довольно использованием услуги
…
Практически во всех случаях у абонентов
даже так? это все те usability-исследования?
Дайте пожалуйста цифры «большинства» и «многочисленности», желательно в попугаях. :)
З.Ы. Poytu, это не к вам вопросы конечно, а надеяться на ответ представителей Билайна врятли придется :)
el777
24.07.2015 14:29+5Вставка контента оператором не меняет исходный код web-ресурсов в интернете и, с точки зрения закона, является абсолютно легитимной
Ответ уборщица писала?
Я не верю, что даже недоучившийся юрист может путать понятия:
Легальный — соответствующий закону.
Легитимный — общественно признанный.
«Общественно признанный с точки зрения закона» — мало того, что вранье, так и звучит как бред.
Как раз общественность-то и возмущается и не хочет принимать эту штуку.
nazargulov
21.07.2015 17:48-11Ой, а мы на DPI и не такое делали )) Самое сложное, дорогие юзеры, это ваши tcp-сессии склеивать, тереть gzip из header'ов и хреновы chunk'и собирать, ха -ха))
NightmareZ
24.07.2015 13:56+6Ну ты ведь в курсе, что для тебя отдельный чан в аду уже готов?
nazargulov
01.08.2015 13:57Да не. Чан был бы нужен, если бы не склеили обратно, или пакеты с ретрансмитом приходили. А когда все аккуратно, когда из кода четко вырезается div..)
lomalkin
24.07.2015 21:27А чем вам gzip не угодил?
nazargulov
01.08.2015 03:50Ну а че, нам это еще и разархивировать самим что ли? Поставил четыре пробела вместо gzip и гуд)
dginz
06.08.2015 19:57Вот никогда не понимал, а почему нельзя поменять Content-Length и не заниматься вот таким «четыре пробела вместо»?
M_Muzafarov
14.08.2015 13:34Захожу в ЛК и четко вижу возможность подключения такого тулбара. Сейчас отключен. За более чем два года пользования интернетом Билайна в разных точках России предложения о его подключении не видел.
Если пользователь сам подключает услугу и соглашается, чтобы тулбар выводился во время просмотра сайтов — откуда нападки на внедрение кода? На то он и тулбар в конце-концов, чтоб поверх выводиться.leonid239 Автор
14.08.2015 13:54У меня такой возможности не было, тулбар включился автоматически без каких-либо запросов.
ibKpoxa
Скоро будут кнопки по ГОСТу :)