Commit d52e3c16 authored by Your Name's avatar Your Name

First Commit?

parent af5cab34
...@@ -22,7 +22,7 @@ Icon? ...@@ -22,7 +22,7 @@ Icon?
Thumbs.db Thumbs.db
# Babel ES6 compiles files # Babel ES6 compiles files
dist # dist
# Documentation build # Documentation build
doc/build doc/build
......
web: gunicorn backend:run --log-file -
\ No newline at end of file
...@@ -494,6 +494,47 @@ def print_session_info(sessions): ...@@ -494,6 +494,47 @@ def print_session_info(sessions):
text += "\n%6d %5d %9d %5d" % (int(session.locked), session.limit, session.remaining, session.reset - int(time.time())) text += "\n%6d %5d %9d %5d" % (int(session.locked), session.limit, session.remaining, session.reset - int(time.time()))
return text return text
# @routes.get("/")
# async def index(request):
# return web.FileResponse(os.path.join("dist", "index.html"))
# @routes.get("/css/{path}")
# async def css(request):
# return web.FileResponse(os.path.join("dist", "css", request.match_info['path']))
# @routes.get("/js/{path}")
# async def js(request):
# return web.FileResponse(os.path.join("dist", "js", request.match_info['path']))
# @routes.get("/img/{path}")
# async def img(request):
# return web.FileResponse(os.path.join("dist", "img", request.match_info['path']))
# @routes.get("/favicon/{path}")
# async def favicon(request):
# return web.FileResponse(os.path.join("dist", "favicon", request.match_info['path']))
# @routes.get("/i18n/{path}")
# async def i18n(request):
# return web.FileResponse(os.path.join("dist", "i18n", request.match_info['path']))
# @routes.get("/favicon.png")
# async def faviconpng(request):
# return web.FileResponse(os.path.join("dist", "favicon.png"))
# @routes.get("/manifest.json")
# async def manifest(request):
# return web.FileResponse(os.path.join("dist", "manifest.json"))
# @routes.get("/index.html")
# async def indexhtml(request):
# return web.FileResponse(os.path.join("dist", "index.html"))
# @routes.get("/worker.js")
# async def static(request):
# return web.FileResponse(os.path.join("dist", "worker.js"))
@routes.get('/.stats') @routes.get('/.stats')
async def stats(request): async def stats(request):
text = "--- GUEST SESSIONS ---\n\nLocked Limit Remaining Reset" text = "--- GUEST SESSIONS ---\n\nLocked Limit Remaining Reset"
...@@ -557,14 +598,14 @@ parser.add_argument('--cookie-dir', type=str, default=None, help='directory for ...@@ -557,14 +598,14 @@ parser.add_argument('--cookie-dir', type=str, default=None, help='directory for
parser.add_argument('--log', type=str, default=None, help='log file where test results are written to') parser.add_argument('--log', type=str, default=None, help='log file where test results are written to')
parser.add_argument('--daemon', action='store_true', help='run in background') parser.add_argument('--daemon', action='store_true', help='run in background')
parser.add_argument('--debug', type=str, default=None, help='debug log file') parser.add_argument('--debug', type=str, default=None, help='debug log file')
parser.add_argument('--port', type=int, default=8080, help='port which to listen on') parser.add_argument('--port', type=int, default=8000, help='port which to listen on')
parser.add_argument('--host', type=str, default='127.0.0.1', help='hostname/ip which to listen on') parser.add_argument('--host', type=str, default='0.0.0.0', help='hostname/ip which to listen on')
parser.add_argument('--mongo-host', type=str, default=None, help='hostname or IP of mongoDB service to connect to') parser.add_argument('--mongo-host', type=str, default=None, help='hostname or IP of mongoDB service to connect to')
parser.add_argument('--mongo-port', type=int, default=27017, help='port of mongoDB service to connect to') parser.add_argument('--mongo-port', type=int, default=27017, help='port of mongoDB service to connect to')
parser.add_argument('--mongo-db', type=str, default='tester', help='name of mongo database to use') parser.add_argument('--mongo-db', type=str, default='tester', help='name of mongo database to use')
parser.add_argument('--twitter-auth-key', type=str, default=TWITTER_AUTH_KEY, help='auth key for twitter guest session') parser.add_argument('--twitter-auth-key', type=str, default=TWITTER_AUTH_KEY, help='auth key for twitter guest session')
parser.add_argument('--cors-allow', type=str, default=None, help='value for Access-Control-Allow-Origin header') parser.add_argument('--cors-allow', type=str, default=None, help='value for Access-Control-Allow-Origin header')
args = parser.parse_args() args , undefined= parser.parse_known_args()
TwitterSession.twitter_auth_key = args.twitter_auth_key TwitterSession.twitter_auth_key = args.twitter_auth_key
...@@ -607,6 +648,7 @@ def run(): ...@@ -607,6 +648,7 @@ def run():
app = web.Application() app = web.Application()
app.add_routes(routes) app.add_routes(routes)
web.run_app(app, host=args.host, port=args.port) web.run_app(app, host=args.host, port=args.port)
return app
if args.daemon: if args.daemon:
with daemon.DaemonContext(): with daemon.DaemonContext():
......
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg815"
width="512"
height="512"
viewBox="0 0 512 512"
sodipodi:docname="favicon.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
inkscape:export-filename="/home/carebear/shadowban-eu/favicon/favicon.png"
inkscape:export-xdpi="24"
inkscape:export-ydpi="24">
<metadata
id="metadata821">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs819">
<linearGradient
inkscape:collect="always"
id="linearGradient904">
<stop
id="stop902"
offset="0"
style="stop-color:#041723;stop-opacity:1" />
<stop
id="stop900"
offset="1"
style="stop-color:#1481c3;stop-opacity:1" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient904"
id="linearGradient906"
x1="28.892033"
y1="275.05258"
x2="471.5647"
y2="276.04556"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-15.080711,15.080708)" />
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1364"
inkscape:window-height="734"
id="namedview817"
showgrid="false"
inkscape:zoom="1.0070801"
inkscape:cx="273.06665"
inkscape:cy="273.06665"
inkscape:window-x="0"
inkscape:window-y="18"
inkscape:window-maximized="1"
inkscape:current-layer="layer2"
showguides="false" />
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Outline"
style="display:none"
sodipodi:insensitive="true"
transform="translate(0,-34.133301)">
<path
style="fill:#000000;fill-opacity:1;stroke-width:1.0666666"
d="m 139.19997,484.02784 c -15.33489,-2.01176 -22.57605,-3.2025 -25.06666,-4.12196 -1.46667,-0.54145 -5.18614,-1.29837 -8.26548,-1.68205 -3.07934,-0.38368 -5.86767,-1.13263 -6.19629,-1.66433 -0.32861,-0.53172 -1.68831,-0.96675 -3.02155,-0.96675 -2.53841,0 -15.999264,-3.76263 -18.818361,-5.26019 -0.899257,-0.47769 -3.211589,-1.21481 -5.138517,-1.63803 -1.926929,-0.42324 -4.791173,-1.44132 -6.364989,-2.2624 -1.573815,-0.82109 -3.467995,-1.49586 -4.209289,-1.49947 -0.741294,-0.003 -2.181294,-0.46332 -3.2,-1.02157 -1.018706,-0.55824 -3.772193,-1.81928 -6.118859,-2.8023 -2.346667,-0.98303 -9.666666,-4.34291 -16.266666,-7.46641 -11.422936,-5.406 -11.999999,-5.83548 -11.999999,-8.93103 v -3.25193 h 11.670381 c 6.41871,0 11.921758,-0.40673 12.228996,-0.90386 0.307238,-0.49712 5.455607,-1.22477 11.440819,-1.617 5.985214,-0.39224 11.402165,-1.12627 12.03767,-1.63119 0.635505,-0.50493 4.035464,-1.26353 7.555464,-1.68579 3.52,-0.42226 6.879999,-1.14607 7.466666,-1.60845 0.586667,-0.46239 2.746667,-1.18289 4.8,-1.60112 4.142564,-0.84377 17.416864,-5.21511 23.961434,-7.8907 4.92169,-2.01212 25.71187,-12.27575 28.83856,-14.23695 18.46788,-11.58378 20.88382,-13.69249 19.04238,-16.62071 -0.7932,-1.26135 -3.30618,-2.0222 -8.35183,-2.52867 -3.96948,-0.39844 -8.47873,-1.20843 -10.02055,-1.79997 -1.54184,-0.59154 -4.46757,-1.40658 -6.50165,-1.81119 -2.03407,-0.40461 -4.43407,-1.09825 -5.33334,-1.54141 -0.89925,-0.44316 -4.515,-1.89177 -8.035,-3.21912 -3.52,-1.32736 -7.92798,-3.54374 -9.7955,-4.92528 -1.86752,-1.38156 -3.73808,-2.51192 -4.15681,-2.51192 -0.41872,0 -2.81153,-1.68 -5.31735,-3.73333 -2.50582,-2.05333 -4.96913,-3.73333 -5.47401,-3.73333 -1.14929,0 -14.189667,-13.08418 -14.189667,-14.23733 0,-0.46564 -1.832001,-3.09272 -4.071114,-5.83797 -2.239112,-2.74526 -4.662091,-6.19137 -5.384397,-7.65803 -0.722306,-1.46667 -2.485346,-4.82667 -3.917867,-7.46667 -1.43252,-2.64 -2.609541,-6.36 -2.615602,-8.26667 l -0.01102,-3.46666 H 87.93702 c 10.54076,0 17.80005,-0.42554 18.19629,-1.06667 0.36258,-0.58667 1.53955,-1.06667 2.6155,-1.06667 2.38103,0 3.60705,-2.66746 1.85443,-4.03473 -0.69847,-0.54488 -3.61603,-1.56353 -6.48349,-2.26366 -6.38239,-1.55835 -22.901174,-9.57009 -29.546308,-14.33018 -12.975271,-9.29456 -28.592216,-27.88593 -34.640427,-41.23809 -0.930111,-2.05333 -2.358972,-5.17333 -3.175245,-6.93333 -0.816274,-1.76 -1.806894,-4.64 -2.201378,-6.4 -0.394484,-1.76 -1.084798,-3.68 -1.534032,-4.26667 -0.449233,-0.58666 -1.162275,-3.94666 -1.584537,-7.46666 -0.422264,-3.52 -1.219496,-6.96651 -1.771627,-7.65889 -0.552131,-0.6924 -0.852903,-3.0924 -0.668382,-5.33334 0.301554,-3.66225 0.660829,-4.10637 3.551366,-4.38998 1.94631,-0.19098 5.315102,0.80361 8.533333,2.51936 3.328539,1.77455 7.711292,3.04279 11.717461,3.3907 3.52,0.30567 6.879999,0.91273 7.466666,1.34901 0.586667,0.43628 3.828394,1.12721 7.20384,1.53541 5.125142,0.6198 6.246741,0.45667 6.801614,-0.98931 0.699552,-1.82301 -3.30168,-6.9563 -5.422203,-6.9563 -1.321691,0 -14.449917,-12.92349 -14.449917,-14.22457 0,-0.45863 -1.460226,-2.65091 -3.244947,-4.87176 -4.562512,-5.67744 -8.164047,-12.12942 -12.263945,-21.97033 -0.733248,-1.76 -1.855131,-4.4 -2.493072,-5.86667 -1.202347,-2.76426 -2.676216,-8.4257 -4.581893,-17.6 -1.391073,-6.69689 -0.667999,-41.39924 0.903756,-43.37379 0.624398,-0.78441 1.46081,-3.23262 1.858694,-5.44046 0.397884,-2.207844 2.120395,-7.127844 3.827804,-10.933336 4.122041,-9.187249 6.358857,-9.32685 13.526876,-0.844221 8.637745,10.221907 32.572539,32.523687 40.517326,37.752937 1.658837,1.09184 6.616067,4.64488 11.016067,7.89565 4.4,3.25078 8.72,6.22097 9.6,6.60044 0.88,0.37946 3.03004,1.69182 4.77788,2.91636 7.7913,5.45862 41.87371,23.02642 44.67238,23.02642 0.72769,0 1.77907,0.44639 2.3364,0.99199 0.55734,0.54559 3.17334,1.75401 5.81334,2.68538 15.39316,5.43057 26.65432,9.0236 30.39999,9.69954 2.34667,0.42347 4.74667,1.06691 5.33334,1.42985 1.57872,0.9767 12.74475,3.28475 21.86666,4.51991 4.4,0.59579 8.96,1.52655 10.13334,2.06836 1.17333,0.54181 7.85238,1.10958 14.84233,1.26171 l 12.709,0.27659 0.0998,-22.93333 c 0.0628,-14.44612 0.53283,-23.72283 1.26998,-25.06666 0.64364,-1.17334 2.24507,-5.49334 3.55874,-9.6 2.94444,-9.20464 8.12521,-20.05682 12.03994,-25.22016 1.6208,-2.13776 2.94691,-4.40076 2.94691,-5.02889 0,-1.58099 20.16543,-21.878641 23.56544,-23.719958 2.42505,-1.313317 23.25333,-11.689353 27.66956,-13.78417 0.89927,-0.426557 3.29927,-1.132019 5.33334,-1.567694 2.03408,-0.435675 4.37174,-1.33671 5.1948,-2.002299 1.00492,-0.812653 8.53797,-1.210162 22.93333,-1.210162 17.68863,0 22.5559,0.339905 27.83686,1.943987 10.07073,3.058963 21.98103,8.135927 26.9868,11.503564 2.52274,1.697179 4.85367,3.085781 5.17984,3.085781 0.32616,0 2.344,1.32 4.48406,2.933333 12.64945,9.536017 20.20718,11.685123 31.08262,8.838624 2.05334,-0.537432 5.89334,-1.526952 8.53334,-2.198934 2.64,-0.67198 5.76,-1.630644 6.93333,-2.130363 1.17333,-0.499719 3.33333,-1.216186 4.8,-1.592151 1.46667,-0.375964 5.78667,-2.158411 9.6,-3.960992 3.81333,-1.802581 7.95024,-3.732488 9.19313,-4.288681 7.32764,-3.279116 9.10504,4.103044 3.12682,12.986657 -2.08264,3.094786 -3.78662,6.099666 -3.78662,6.677514 0,0.577847 -6.53571,7.529894 -14.5238,15.449004 -9.70636,9.62251 -14.16915,14.75304 -13.45452,15.46766 1.8722,1.87221 24.08613,-2.74155 37.76635,-7.84394 4.70385,-1.75442 7.27864,-0.27505 7.27864,4.18202 0,3.50784 -1.27367,5.12807 -14.61748,18.59479 -8.03961,8.11367 -15.14981,14.75212 -15.80043,14.75212 -1.78276,0 -6.91542,5.73631 -6.91542,7.72875 0,0.95995 -0.45227,2.02486 -1.00504,2.3665 -0.55277,0.34163 -1.30568,2.88996 -1.67314,5.66295 -0.36745,2.77299 -1.07755,6.0018 -1.57797,7.17514 -0.50043,1.17333 -1.18729,10.96387 -1.52635,21.75674 -0.33906,10.79289 -1.05983,20.15763 -1.60172,20.81056 -0.54187,0.65293 -1.32465,4.30239 -1.73949,8.10992 -0.41485,3.80752 -1.11249,7.40277 -1.55033,7.98944 -0.43783,0.58667 -1.12888,3.8191 -1.53566,7.18319 -0.40678,3.36408 -1.12275,6.35331 -1.59103,6.64272 -0.46827,0.28942 -1.16859,2.91726 -1.55626,5.83964 -0.38767,2.92239 -1.11556,5.56726 -1.61752,5.87749 -0.50196,0.31024 -1.23579,2.71877 -1.63071,5.35231 -0.39492,2.63354 -1.11589,5.03414 -1.60215,5.33467 -0.48627,0.30053 -1.19648,2.21144 -1.57826,4.24647 -0.38177,2.03504 -1.39323,5.04034 -2.24768,6.67845 -0.85446,1.63811 -1.5565,3.58491 -1.56012,4.3262 -0.003,0.74129 -0.42939,2.18129 -0.94616,3.2 -2.47969,4.88818 -5.46052,11.78472 -5.46141,12.63569 -0.003,3.10474 -16.30406,32.36666 -26.57972,47.71388 -2.68728,4.01356 -5.60595,8.39997 -6.48595,9.74757 -9.19066,14.0743 -44.53792,51.75586 -54.39999,57.99255 -1.46667,0.9275 -5.06667,3.64929 -8,6.04841 -15.12564,12.37099 -52.208,33.48811 -63.74341,36.29967 -1.61888,0.39457 -3.2072,1.14423 -3.52962,1.66591 -0.32241,0.52167 -1.39788,0.96479 -2.38992,0.98469 -0.99204,0.0199 -3.72371,0.96362 -6.07038,2.09714 -2.34667,1.13353 -5.07834,2.07724 -6.07038,2.09714 -0.99204,0.02 -2.06127,0.45293 -2.37606,0.96226 -0.31479,0.50935 -2.96339,1.24326 -5.88578,1.63093 -2.92239,0.38767 -5.58073,1.13734 -5.90742,1.66594 -0.3267,0.52861 -3.23276,1.29078 -6.45794,1.69375 -3.22517,0.40295 -6.09814,1.11158 -6.38437,1.57472 -0.28624,0.46313 -3.03989,1.15392 -6.11924,1.53507 -3.07934,0.38114 -6.55881,1.12687 -7.73214,1.65716 -1.17333,0.53029 -6.45333,1.47739 -11.73333,2.10465 -5.28,0.62728 -12.96,1.57684 -17.06667,2.11016 -8.97407,1.16543 -57.11837,1.1193 -66.13333,-0.0634 z m 72.19767,-3.85371 c 0.77128,-0.62025 5.60053,-1.46772 10.73168,-1.8833 5.13115,-0.41557 9.56447,-1.13602 9.85184,-1.60098 0.28736,-0.46497 3.64411,-1.17969 7.45942,-1.58827 3.81532,-0.40859 7.18252,-1.14026 7.48269,-1.62592 0.30016,-0.48568 3.06521,-1.22176 6.14456,-1.63575 3.07933,-0.41398 6.0788,-1.12352 6.66547,-1.57676 0.58666,-0.45322 2.74666,-1.14743 4.8,-1.54268 2.05333,-0.39525 4.69333,-1.12378 5.86666,-1.61897 1.17334,-0.49519 5.25334,-1.94835 9.06667,-3.22924 3.81333,-1.28088 8.20739,-3.00777 9.76458,-3.83753 1.55718,-0.82975 3.31439,-1.50864 3.90492,-1.50864 0.59052,0 4.6611,-1.68 9.04572,-3.73333 4.38462,-2.05334 8.25895,-3.73334 8.60962,-3.73334 0.5602,0 12.33019,-6.80296 16.67516,-9.63812 0.88,-0.57422 2.8,-1.61946 4.26666,-2.32276 1.46667,-0.70331 4.41575,-2.61983 6.5535,-4.25894 2.13776,-1.63909 4.26687,-2.98018 4.73136,-2.98018 0.46448,0 3.12152,-1.92 5.90453,-4.26666 2.78301,-2.34667 5.39964,-4.26667 5.81473,-4.26667 0.41508,0 4.24076,-3.12 8.50149,-6.93333 4.26073,-3.81334 8.14748,-6.93333 8.63723,-6.93333 1.25485,0 24.91313,-23.73035 24.97319,-25.04927 0.0271,-0.59624 3.14296,-4.44407 6.92401,-8.55073 3.78105,-4.10667 6.87884,-7.99228 6.88397,-8.63468 0.005,-0.64241 0.97859,-2.04519 2.16325,-3.1173 2.87033,-2.5976 17.96993,-25.32518 21.07041,-31.71469 1.35221,-2.78666 2.88178,-5.06666 3.39903,-5.06666 0.51725,0 1.25674,-1.44 1.6433,-3.2 0.38656,-1.76 1.09266,-3.2 1.56912,-3.2 0.47644,0 1.19637,-1.31519 1.59982,-2.92265 0.40344,-1.60745 1.05592,-3.16745 1.44995,-3.46666 0.98936,-0.75129 5.51444,-10.13496 5.51444,-11.43532 0,-0.5817 1.14452,-3.21019 2.54338,-5.84109 1.39887,-2.6309 2.88598,-6.42239 3.30471,-8.42553 0.41872,-2.00315 1.37126,-4.60912 2.11673,-5.79107 0.74547,-1.18193 1.71378,-3.82193 2.1518,-5.86666 0.43801,-2.04473 1.16553,-4.19769 1.61672,-4.78435 0.45118,-0.58667 1.32368,-3.22667 1.93889,-5.86667 2.03473,-8.73148 3.56471,-14.37221 4.48443,-16.53333 0.94385,-2.2178 2.5004,-9.99485 4.37355,-21.85166 0.60113,-3.80508 1.54236,-7.45983 2.09163,-8.12166 0.54928,-0.66184 1.29953,-10.26859 1.66722,-21.34834 0.36769,-11.07976 1.01711,-20.625 1.44314,-21.21167 0.42603,-0.58667 1.07182,-3.70376 1.43509,-6.92685 0.36327,-3.2231 1.14924,-6.0231 1.7466,-6.22223 0.59736,-0.19911 1.08611,-1.29641 1.08611,-2.43843 0,-1.14202 1.74852,-3.62202 3.8856,-5.5111 12.22852,-10.80953 33.44773,-32.4122 33.44773,-34.0522 0,-2.33179 -0.9706,-2.39508 -4.94474,-0.32242 -1.68039,0.87638 -4.10693,1.59638 -5.39231,1.6 -1.28537,0.003 -2.60592,0.4416 -2.93452,0.97331 -0.32861,0.5317 -3.11694,1.30545 -6.19629,1.71943 -3.07934,0.41399 -6.07881,1.12565 -6.66547,1.58148 -0.58667,0.45583 -4.55748,1.17189 -8.82402,1.59124 -8.71102,0.85618 -10.90932,-0.073 -10.90932,-4.61119 0,-2.74813 6.71228,-10.8477 8.98971,-10.8477 1.31969,0 15.54363,-13.96306 15.54363,-15.258549 0,-0.503666 1.68,-2.965975 3.73333,-5.471798 2.05333,-2.505822 3.73333,-4.941298 3.73333,-5.412166 0,-0.470868 1.2,-2.429405 2.66667,-4.352305 2.36543,-3.101232 3.41279,-5.771853 2.26359,-5.771853 -0.67974,0 -8.37036,3.200655 -13.99692,5.825191 -12.01535,5.604616 -25.62265,9.213085 -37.21887,9.869938 -9.11853,0.516507 -12.17558,-0.455846 -20.00129,-6.361796 -2.13776,-1.613334 -4.22868,-2.933333 -4.64651,-2.933333 -0.41782,0 -2.50874,-1.341084 -4.6465,-2.980187 -2.13775,-1.639102 -5.08683,-3.555618 -6.5535,-4.258925 -1.46666,-0.703305 -3.38666,-1.722276 -4.26666,-2.264378 -0.88,-0.542103 -3.52,-1.768839 -5.86667,-2.726082 -2.34667,-0.957242 -5.04757,-2.164351 -6.00201,-2.682465 -0.95445,-0.518114 -3.59445,-1.277448 -5.86667,-1.68741 -2.27222,-0.409962 -4.80509,-1.282798 -5.62859,-1.939635 -2.08599,-1.663815 -44.01179,-1.649335 -46.07212,0.01591 -0.8235,0.665589 -3.16152,1.566624 -5.1956,2.002299 -2.03407,0.435675 -4.43407,1.149443 -5.33333,1.586153 -0.89925,0.436706 -6.43501,3.099628 -12.30167,5.917603 -5.86667,2.817975 -12.66745,6.719632 -15.11286,8.670351 -2.44539,1.950718 -4.74635,3.54676 -5.11323,3.54676 -0.74652,0 -11.17967,10.624359 -12.84058,13.075907 -0.58666,0.86594 -3.18387,4.63811 -5.77156,8.3826 -5.4485,7.88419 -10.72872,17.80516 -10.74826,20.19482 -0.007,0.90934 -0.46875,2.10934 -1.02517,2.66667 -1.29849,1.30064 -4.25206,11.97808 -5.59136,20.21333 -0.57985,3.5654 -0.75798,14.01306 -0.4022,23.58885 0.54584,14.69071 0.40043,17.38655 -1.00044,18.54919 -1.25399,1.04071 -4.95265,1.1802 -15.74214,0.59367 -7.75666,-0.42165 -14.58659,-1.15558 -15.17761,-1.63097 -0.59103,-0.47538 -5.03729,-1.20772 -9.88058,-1.62742 -4.84329,-0.4197 -9.05086,-1.15929 -9.35015,-1.64355 -0.29928,-0.48426 -3.18293,-1.21016 -6.4081,-1.61312 -3.22517,-0.40296 -6.09815,-1.11158 -6.38437,-1.57472 -0.28624,-0.46314 -3.0399,-1.18079 -6.11925,-1.59477 -3.07934,-0.41399 -6.0788,-1.12352 -6.66547,-1.57676 -0.58667,-0.45323 -2.74666,-1.17491 -4.8,-1.60373 -2.05333,-0.42883 -4.21333,-1.14883 -4.8,-1.6 -0.58666,-0.45118 -2.73091,-1.17679 -4.76499,-1.61246 -2.03407,-0.43568 -4.43407,-1.19427 -5.33333,-1.68576 -2.76007,-1.50853 -11.60512,-5.23512 -12.42553,-5.23512 -0.84016,0 -12.51839,-5.37812 -18.54281,-8.53944 -2.05334,-1.07748 -6.37333,-3.3169 -9.6,-4.97648 -3.22667,-1.65957 -6.02667,-3.37741 -6.22222,-3.81741 -0.19556,-0.44 -0.82197,-0.8 -1.39204,-0.8 -0.57007,0 -4.67658,-2.4 -9.12557,-5.33333 -4.449,-2.93334 -8.33315,-5.33334 -8.63143,-5.33334 -0.2983,0 -2.59258,-1.68 -5.0984,-3.73333 -2.50582,-2.05333 -4.90203,-3.73333 -5.3249,-3.73333 -0.42287,0 -3.775851,-2.64 -7.451073,-5.86667 -3.675223,-3.22666 -7.153931,-5.86666 -7.730463,-5.86666 -0.576531,0 -9.275377,-8.16 -19.330768,-18.13334 C 51.904385,95.486108 43.449861,87.326108 43.171944,87.326108 c -0.277915,0 -0.505302,0.787425 -0.505302,1.749834 0,1.500146 -2.212933,6.968716 -5.393731,13.328918 -0.480094,0.95997 -1.206121,4.69071 -1.613395,8.29053 -0.407272,3.59982 -1.157281,6.80271 -1.666685,7.11754 -1.209402,0.74745 -1.209402,27.87891 0,28.62636 0.509404,0.31483 1.251585,3.44853 1.649292,6.9638 0.397706,3.51525 1.126507,6.64069 1.619557,6.94542 0.49305,0.30471 1.223705,2.29843 1.623677,4.43046 0.399972,2.13204 1.143512,4.65734 1.652311,5.61179 0.508799,0.95444 1.607366,3.17535 2.44126,4.93535 0.833894,1.76 2.904769,5.76662 4.601942,8.90361 1.697174,3.13699 3.765267,6.97699 4.595762,8.53333 0.830494,1.55635 6.950493,8.21187 13.599999,14.79005 12.153571,12.02321 13.962749,15.0736 10.810009,18.22634 -1.495984,1.49599 -10.047123,1.73354 -10.930832,0.30367 -0.331871,-0.53698 -4.3202,-1.28747 -8.862951,-1.66775 -8.583208,-0.71852 -9.332723,-0.91951 -17.443048,-4.67761 -7.323155,-3.39333 -7.617861,-3.22531 -6.761635,3.85502 0.407939,3.37333 1.108206,6.61333 1.556152,7.2 0.447944,0.58667 1.150482,3.10415 1.561194,5.59441 0.410712,2.49026 1.184983,4.79859 1.720602,5.12962 0.53562,0.33103 0.973854,1.31988 0.973854,2.19744 0,1.68609 3.604452,10.50379 5.400679,13.21186 0.583691,0.88 1.343303,2.44 1.688028,3.46667 0.344725,1.02666 1.05079,1.86666 1.569032,1.86666 0.518243,0 0.94226,0.49944 0.94226,1.10986 0,1.2629 4.385564,7.77262 5.6,8.31236 0.44,0.19556 0.8,0.92557 0.8,1.62224 0,1.86664 17.809882,19.00957 23.999998,23.10125 7.373594,4.87395 20.378927,11.45897 24.356917,12.33268 1.81852,0.39941 4.28214,1.21978 5.47474,1.82303 1.19259,0.60325 2.88834,1.43453 3.76834,1.84728 0.94478,0.44315 1.6,2.1841 1.6,4.2513 0,2.0672 -0.65522,3.80815 -1.6,4.2513 -0.88,0.41275 -2.67348,1.30506 -3.98552,1.98291 -1.49372,0.77171 -8.38001,1.23246 -18.420326,1.23246 H 73.559329 l 0.709206,2.93333 c 0.390061,1.61333 1.718218,4.37333 2.951459,6.13333 2.474102,3.53088 5.224942,8.28874 6.961922,12.04136 1.499475,3.2395 21.731034,23.41998 24.843374,24.78066 1.34274,0.58703 5.32135,2.94841 8.84135,5.24754 3.52,2.29912 7.12,4.21698 8,4.2619 0.88,0.0449 2.88767,0.75349 4.46148,1.57458 1.57381,0.82109 4.45381,1.83357 6.4,2.24993 1.94619,0.41637 4.01852,1.13669 4.60518,1.60071 0.58667,0.46401 3.46667,1.18914 6.4,1.61138 2.93334,0.42224 5.82553,1.15646 6.42709,1.6316 0.60156,0.47513 3.48156,1.01459 6.4,1.19878 l 5.30625,0.33489 0.33044,4.58339 c 0.26046,3.61263 -0.19138,5.13369 -2.13333,7.18157 -1.35508,1.429 -2.8747,2.60648 -3.37695,2.61661 -0.50224,0.0107 -2.73132,1.45843 -4.9535,3.21843 -2.22217,1.76 -4.37716,3.2 -4.78883,3.2 -0.41168,0 -2.23159,1.05605 -4.04426,2.34679 -4.01757,2.86075 -25.34554,13.59434 -27.08046,13.62859 -0.68579,0.0136 -2.84579,0.82584 -4.8,1.8051 -5.85337,2.93314 -6.66687,3.24812 -10.52145,4.07373 -2.03408,0.43567 -4.17833,1.16243 -4.765,1.61503 -0.58666,0.45258 -3.22666,1.17143 -5.866661,1.59743 -2.64,0.42599 -5.28,1.15287 -5.866666,1.61528 -0.586667,0.46241 -3.946667,1.34934 -7.466667,1.97095 -3.519999,0.62162 -8.799999,1.60039 -11.733332,2.17507 -2.933333,0.57468 -8.237333,1.07347 -11.786666,1.10845 -3.549333,0.035 -6.914567,0.52482 -7.478297,1.08854 -0.56373,0.56373 -5.81973,1.16373 -11.68,1.33333 l -10.655035,0.30838 10.133333,4.93434 c 5.573333,2.71389 13.973333,6.48495 18.666666,8.38014 4.693333,1.8952 9.973332,4.09817 11.733332,4.8955 1.76,0.79732 4.64,1.77245 6.4,2.16693 1.76,0.39449 3.68,1.07564 4.266666,1.51367 0.586667,0.43803 3.226667,1.29977 5.866667,1.91498 9.80223,2.28426 14.44513,3.56381 16.09493,4.43565 0.93222,0.49263 4.53222,1.23913 8,1.65886 3.46779,0.41974 6.78507,1.14307 7.37174,1.6074 0.58666,0.46433 4.66666,1.18659 9.06666,1.60503 4.4,0.41842 8.4966,1.15224 9.10356,1.63072 1.82232,1.43653 12.22967,1.80189 44.96078,1.57841 19.96495,-0.13632 31.63398,-0.61705 32.53333,-1.34026 z"
id="path825"
inkscape:connector-curvature="0" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Fill"
transform="translate(0,-34.133301)">
<path
style="opacity:1;fill:url(#linearGradient906);fill-opacity:1;stroke:none;stroke-width:2.97890902;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 123.01274,497.60114 c -17.54926,-1.67734 -46.581872,-8.0988 -65.535991,-14.4953 -15.67829,-5.291 -42.69769,-17.36356 -42.69769,-19.07778 0,-0.87274 11.10963,-2.57833 26.89871,-4.1296 15.86864,-1.55908 42.543009,-8.2231 54.47647,-13.60978 21.921311,-9.89511 28.230451,-13.2492 42.902421,-22.80793 7.12492,-4.64186 8.52754,-7.00731 7.98214,-13.46143 -0.2908,-3.44109 -0.55004,-3.72363 -3.41673,-3.72363 -3.88164,0 -11.93234,-2.03272 -26.4192,-6.67058 -16.42763,-5.2592 -27.793361,-12.34294 -40.552742,-25.27469 -9.40828,-9.53539 -12.98135,-14.49964 -19.889069,-27.63291 l -2.35024,-4.46836 16.675749,-0.51187 c 20.243191,-0.62136 23.130051,-1.61157 23.130051,-7.9337 0,-3.57428 -0.35246,-4.10601 -3.93232,-5.93232 -2.16277,-1.10335 -4.54828,-2.00611 -5.30112,-2.00611 -2.559501,0 -21.027491,-9.65153 -27.00994,-14.11562 -9.38302,-7.00159 -20.47002,-18.43755 -26.2659,-27.09262 -5.65983,-8.4519 -11.96343,-20.75853 -11.96343,-23.35643 0,-0.8619 -0.40355,-1.9916 -0.89677,-2.51043 -2.17487,-2.28778 -6.3504,-23.28514 -4.63048,-23.28514 0.34223,0 3.4015,1.1736 6.79838,2.608 5.33414,2.25245 14.00179,4.07223 28.77586,6.04154 7.39972,0.98634 10.544359,-1.26039 8.66878,-6.19351 -0.52101,-1.37037 -6.42905,-8.24583 -13.12899,-15.2788 -11.14791,-11.70206 -12.67184,-13.76826 -17.9573,-24.34714 -3.17659,-6.35795 -6.61308,-14.11249 -7.63665,-17.23233 -7.35459,-22.4167 -6.87679,-47.24889 1.28416,-66.74007 1.715,-4.09599 3.23402,-7.62111 3.3756,-7.83359 0.14158,-0.21247 7.70454,6.85549 16.80657,15.70658 9.10204,8.8511 18.69479,17.73825 21.317219,19.74924 21.14508,16.21487 24.822491,18.7479 43.115492,29.69821 6.23263,3.7309 22.6873,12.29643 27.80315,14.47302 25.63337,10.90597 36.96842,14.678 60.57114,20.15653 20.57874,4.77663 51.25176,7.8241 54.97978,5.46243 1.07534,-0.68122 1.38967,-5.39857 1.50421,-22.57486 0.15488,-23.22663 0.73707,-27.04997 6.25487,-41.07658 3.53521,-8.98675 5.79214,-13.25624 11.54784,-21.84533 10.47498,-15.63159 20.50105,-24.28013 38.76764,-33.441167 15.78099,-7.914464 22.70261,-9.913855 36.88408,-10.654405 28.70101,-1.498753 44.0898,2.739106 68.76466,18.936832 6.41623,4.21192 13.45322,8.29051 15.63776,9.06355 8.61209,3.04754 30.10801,-1.10367 49.35406,-9.53106 6.16939,-2.701431 11.39418,-4.752286 11.61064,-4.557456 0.21645,0.194831 -0.78894,2.141087 -2.23418,4.325016 -1.44526,2.18392 -2.62774,4.20809 -2.62774,4.49814 0,1.68582 -11.63796,15.77387 -17.00235,20.58179 -12.66175,11.34829 -13.67171,12.41486 -14.36261,15.16761 -1.09202,4.35094 0.55914,5.92508 6.58056,6.27361 7.00028,0.40519 25.93347,-3.63551 34.5888,-7.38189 1.84254,-0.79753 3.57204,-1.22809 3.84333,-0.9568 0.94818,0.94818 -5.82912,8.44218 -20.42013,22.57957 -8.08821,7.83676 -15.50966,15.81258 -16.4921,17.72405 -2.92754,5.6959 -4.41371,15.2754 -5.54582,35.74691 -0.58894,10.6496 -1.49343,20.70342 -2.00999,22.34182 -0.51655,1.6384 -1.83012,7.8941 -2.91905,13.90157 -4.84178,26.71156 -16.47771,60.65928 -29.01077,84.63857 -22.35032,42.76251 -51.75744,77.77717 -89.17422,106.17853 -12.11696,9.19743 -34.31638,22.76657 -45.21413,27.63662 -37.81763,16.90015 -73.72872,26.10716 -110.18562,28.24976 -17.35664,1.02005 -43.4538,1.02089 -54.11685,0.002 z"
id="path866"
inkscape:connector-curvature="0" />
</g>
</svg>
{
"buttons": {
"check": "Check",
"support": "Support Us",
"install": "Install"
},
"title": "Is <span class=\"header-screen_name\">@{{screenName}}</span><br> shadowbanned on Twitter?",
"screenNameDefault": "username",
"qfSettingToast": "PLEASE NOTE: We can only detect the presence of specific bans or deboosting methods, not their absence. There may be others which we do not know or cannot easily test for.",
"supportModal": {
"content": "<h4>Support Us</h4><p>Shadowban.eu needs your help!</p><p>For over a year now (since 04/2018), shadowban.eu has given Twitter users all around the world an easy way to test their accounts.We have exposed and defeated the #QFD and our test results have been used as evidence in several law suits.<h6>We are running low on resources</h6><p>You may have noticed some problems with the site over the past few days. Those were due to our one-server solution not able to handle all the requests and the need for user accounts, testing for the newest addition, the deboosting test. Since Twitter decided to to enforce phone verification, we have to buy some SIM cards to be able to do so.</p>Just recently, we have furthermore identified a new shadowbanning method: <a href=\"https://twitter.com/search?q=%23TimelineTerminationBan&src=typed_query\" rel=\"noopener noreferrer\">#TimelineTerminationBan</a>. We have outlined it in our <a href=\"https://blog.shadowban.eu/#2019-10-16-here-we-go-again\" rel=\"noopener noreferrer\">first blogpost</a> and a new test is in development.</p><p>This then, however, requires a whole new approach of testing, which would definetly bring the current setup to its knees.</p><p>So if you feel that shadowban.eu brings you any value, please consider making a donation to our PayPal! Every bit helps keeping the site running and continuing our research.</p><h6>Thanks You! :)</h6>",
"donateButton": "Donate via PayPal",
"dismissButton": "No, thanks"
}
}
{
"limitVisibility": {
"title": "Twitter reserves the right to limit distribution or visibility of content",
"text": "The updated <a href=\"https://twitter.com/en/tos\" rel=\"noopener noreferrer\">Terms of Service</a> will go into effect on January 1, 2020."
},
"noShadowbanClaim": {
"title": "But Twitter claims that they do not shadowban",
"text": "In a <a href=\"https://blog.twitter.com/en_us/topics/company/2018/Setting-the-record-straight-on-shadow-banning.html\" rel=\"noopener noreferrer\">blog post from July 2018</a>, Twitter claims that they do not shadowban by defining shadowbanning as <i>deliberately making someone’s content undiscoverable to everyone except the person who posted it, unbeknownst to the original poster</i>. If you strictly follow Twitter's own definition, this may not be false because the key is discoverability. Later, Twitter provides a hint why this definition is deceptive by stating that you are <i>always able to see the tweets from accounts you follow (although you may have to do more work to find them, like go directly to their profile)</i>. The problem is obvious: Having to do more work to find tweets of accounts is not shadowbanning if you let Twitter define it. Although tweets within a thread may be completely invisible to others or tweets may not be shown in a user's followers' timelines, you will always be able to find those tweets by navigating to the user's \"Tweets &amp; replies\" section on their profile. In contrast to Twitter, we find that this is shadowbanning because without navigating there, it is not even possible for others to know that the corresponding tweets do exist.</p>"
},
"qfdTestGone": {
"title": "Why is the QFD test gone?",
"text": "<h5>Quality Filter Discrimination</h5> <p> QFD caused your tweets to be invisible within the latest section of the search, including hashtags, when the quality filter on the search page was turned on. The filter was turned on by default and would reset for each search anew. QFD was introduced on May 15, 2018 as part of Twitter's so-called <a href=\"https://blog.twitter.com/official/en_us/topics/product/2018/Serving_Healthy_Conversation.html\" rel=\"noopener noreferrer\">healthy conversation project</a>. </p> <p> The quality filter was deprecated shortly before Twitter CEO Jack Dorsey <a href=\"https://docs.house.gov/meetings/IF/IF00/20180905/108642/HHRG-115-IF00-Wstate-DorseyJ-20180905.pdf\" rel=\"noopener noreferrer\">testified before the United States House Committee on Energy and Commerce</a>. In his testimony, Dorsey stated the following:<br/> <i>Twitter recently made a change to how one of our behavior based algorithms works in search results. When people used search, our algorithms were filtering out those that had a higher likelihood of being abusive from the “Lastest\" tab by default. Those search results were visible in “Latest” if someone turned off the quality filter in search, and they were also in Top search and elsewhere throughout the product. Twitter decided that a higher level of precision is needed when filtering to ensure these accounts are included in “Latest” by default. Twitter therefore turned off the algorithm. As always, we will continue to refine our approach and will be transparent about why we make the decisions that we do.</i><br/> Currently, the quality filter seems to have no effect indeed. But please note that this is not a verification that users are not classified anymore by this algorithm. We just cannot observe it anymore through the quality filter. </p> <p>For documentation purposes, you still find the frequently answered questions about QFD here:</p> <ul id=\"qfdFAQ\" class=\"collapsible\"> <li> <div class=\"collapsible-header\"> <span>Does turning off the quality filter within my notification settings help?</span> </div> <div class=\"collapsible-body\"> <p> The quality filter within your notification settings only controls the notification you receive. Turning it off is recommended and will cause you to see more notifications which you would not have received otherwise. However, turning it off will not cause your own tweets to be more visible. </p> </div> </li> <li> <div class=\"collapsible-header\"> <span>How do I get into the QFD ban?</span> </div> <div class=\"collapsible-body\"> <p> A lot of interaction with accounts affected by QFD will likely cause your account to be affected by QFD soon, too. The absence of personal misbehavior does not guarantee an account to be unaffected. </p> </div> </li> <li> <div class=\"collapsible-header\"> <span>How do I get out of the QFD ban?</span> </div> <div class=\"collapsible-body\"> <p> Several German Twitter users that were affected by QFD have been experimenting with an Arabic follow-back botnet. The botnet generated a lot of followers for those who followed some accounts from this botnet. By accumulating many new followers that were not affected by QFD, at least 30 accounts were able to escape this type of ban. This is a strong hint that guilt by association is a major concept of the classifying algorithm. </p> </div> </li> <li> <div class=\"collapsible-header\"> <span>Is there a political bias?</span> </div> <div class=\"collapsible-body\"> <p> The quality filter indeed seems to mainly affect conservative and right-wing accounts. Testing over 2,000 contacts of two German left-wing extremist accounts did not yield a single account affected by QFD that would not be considered politically right. Testing 509 Twitter accounts from German members of Parliament yielded 14 affected accounts. All of them belong to the AfD, which is a German right-wing party. </p> </div> </li> <li> <div class=\"collapsible-header\"> <span>Does it only affect hashtags and the search? Why is it so bad then?</span> </div> <div class=\"collapsible-body\"> <p> We cannot tell whether the effects of QFD are limited to hashtags and the search. These are only the symptoms making the ban visible to us. It shows that Twitter is capable and willing to discriminate against accounts with certain political opinions. Since shadowbanning is a very unethical way to silence people already, it is possible for Twitter to apply methods that are harder to detect. Think of more subtle ways of banning by limiting the share of followers who a user's tweets are shown to. This would be a censorship method that could only be detected collectively by their followers. </p> </div> </li> </ul>"
},
"testerFunctions": {
"title": "How does this tester work?",
"text": "<h5>Search Ban</h5> <p> The Twitter search features several search modifiers. One of them is the prefix from: which allows to search for tweets from a specific user. For example, when checking whether <a href=\"https://twitter.com/shadowban_eu\" rel=\"noopener noreferrer\"> @shadowban_eu </a> has a shadowban, we query the Twitter search for <a href=\"https://twitter.com/search?f=tweets&vertical=default&q=from%3A%40shadowban_eu&src=typd&qf=off\" rel=\"noopener noreferrer\"> from:@shadowban_eu </a>. If we do not find any tweets although the user has tweeted in the past, the account is subject to a search ban. </p> <h5>Thread Ban</h5> <p> When the user has a search ban, the tester searches their profile for the latest tweet with at least one reply. It then visits the direct URL of the tweet and selects some reply tweet. Afterwards, the direct URL of the reply tweet is visited. If the tweet that the user replied to is not visible, the likelihood that the account is affected by a thread shadowban is very high. </p> <h5>QFD (deprectated)</h5> <p> When you upload an image, cite a tweet or link to an external page, Twitter generates a shortlink for that content. </p> <p> We first find a reference tweet using a combination of from: and filter: search modifiers. For example, <a href=\"https://twitter.com/search?f=tweets&q=from%3A%40shadowban_eu%20filter%3Alinks&src=typd\" rel=\"noopener noreferrer\"> from:@shadowban_eu filter:links </a> returns all tweets from <a href=\"https://twitter.com/shadowban_eu\" rel=\"noopener noreferrer\"> @shadowban_eu </a> containing a link. </p> <p> We simply pick one result tweet as reference and extract the shortlink, e.g. <a href=\"https://t.co/5Vzu63ypQJ\" rel=\"noopener noreferrer\"> https://t.co/5Vzu63ypQJ </a>.<br /> (This link points to a tweet, quoted <a href=\"https://twitter.com/shadowban_eu/status/1019242190277697538\" rel=\"noopener noreferrer\">here</a>). </p> <p> We then query the Twitter search for the tweet using the shortlink's URL with the quality filter turned on and off. If the reference tweet is found in both cases, the account is not affected by QFD. In case it is found only when the filter is turned off, it is affected. </p> <p> We chose this method because shortlinks are unique. Methodically, it does not differ from searching for text or a hashtag but the uniqueness of shortlinks is a technical advantage. </p>"
}
}
{
"checkUser": {
"message": "Test Results"
},
"checkBarrier": {
"message": "Reply Deboosting",
"description": {
"title": "Reply Deboosting",
"text": "If Twitter's signals determine that an account might engage in harmful behavior, Twitter hides their replies behind a barrier and only loads them when \"Show more replies\" is clicked. This behavior is personalized, i.e. Twitter does not hide the tweets of accounts you follow. We therefore use an unbiased reference account without followings in order to determine whether tweets within a thread can be retrieved without clicking \"Show more replies\" from its view.\nIn some cases, Twitter classifies accounts as offensive. In this case, replies are hidden behind a second barrier within the \"Show more replies\" section.<br/> The outcome of this test may depend on the conversation which we found one of your tweets in. For testing, we take your latest reply tweet that is not within a conversation you started. Note that test results are cached for a short period of time.<br/> A failure to test is neither a positive nor a negative test result. This test relies on some conditions that are not fulfilled by all accounts. In some cases, we cannot test for purely technical reasons."
}
},
"checkSuggest": {
"message": "Search Suggestion Ban",
"description": {
"title": "Search Suggestion Ban",
"text": "This type of ban causes an account to not populate search suggestions and people search results when it is searched for while being logged out. Twitter seems to take <a href=\"https://en.wikipedia.org/wiki/Social_network_analysis#Metrics\" target=\"_blank\" rel=\"noopener noreferrer\">tie strength</a> or a similar metric into account. While an account may be suggested to users you are strongly tied to, it may not be shown to others."
}
},
"checkSearch": {
"message": "Search Ban",
"description": {
"title": "Search Ban",
"text": "This type of ban causes your tweets to be hidden from the search results entirely, no matter whether the quality filter is turned on or off. This behavior includes hashtags as well. This type of ban seems to be temporally limited for active accounts."
}
},
"checkConventional": {
"message": "Ghost Ban",
"description": {
"title": "Ghost Ban",
"text": "This is what is referred to as conventional shadowban or thread banning as well. It comprises a search ban while threads are completely ripped apart by hiding reply tweets of the affected user to others. Everything will look perfectly normal to the affected user but many others will not be able to see reply tweets of the affected user at all. Reasons for this ban include behavior like excessive tweeting or following. Again, this type of ban seems to be temporally limited for active accounts."
}
}
}
{
"search": {
"text": "We {{foundOrNot}} by searching for {{searchLink}}.",
"notFound": "did not find a tweet",
"found": "found <a href=\"https://twitter.com/i/status/{{tweetId}}\" rel=\"noopener noreferrer\">a tweet</a>"
},
"barrier": {
"text": "We found <a href=\"https://twitter.com/i/status/{{replyToId}}\" rel=\"noopener noreferrer\">a tweet</a> which the user <a href=\"https://twitter.com/i/status/{{tweetId}}\" rel=\"noopener noreferrer\">replied to</a>.<br />{{explanation}}",
"highQuality": "The tweet was not hidden.",
"lowQuality": "We had to click \"Show more replies\" to view it{{abuse}}.",
"abuseQuality": " and we had to click a second time because the account is rated as potentially offensive"
},
"thread": {
"searchBanned": "A ghost ban implies a search ban. Since the account is not search banned, it cannot be ghost banned.",
"text": "We found <a href=\"https://twitter.com/i/status/{{tweetId}}\" rel=\"noopener noreferrer\">a tweet with at least one reply</a> on the user's profile. A <a href=\"https://twitter.com/i/status/{{replyId}}\" rel=\"noopener noreferrer\">reply tweet</a> is {{detached}} detached."
}
}
{
"buttons": {
"check": "Check",
"support": "Support Us",
"install": "Install"
},
"title": "Is <span class=\"header-screen_name\">@{{screenName}}</span><br> shadowbanned on Twitter?",
"screenNameDefault": "username",
"qfSettingToast": "PLEASE NOTE: We can only detect the presence of specific bans or deboosting methods, not their absence. There may be others which we do not know or cannot easily test for.",
"supportModal": {
"content": "<h4>Support Us</h4><p>Shadowban.eu needs your help!</p><p>For over a year now (since 04/2018), shadowban.eu has given Twitter users all around the world an easy way to test their accounts.We have exposed and defeated the #QFD and our test results have been used as evidence in several law suits.<h6>We are running low on resources</h6><p>You may have noticed some problems with the site over the past few days. Those were due to our one-server solution not able to handle all the requests and the need for user accounts, testing for the newest addition, the deboosting test. Since Twitter decided to to enforce phone verification, we have to buy some SIM cards to be able to do so.</p>Just recently, we have furthermore identified a new shadowbanning method: <a href=\"https://twitter.com/search?q=%23TimelineTerminationBan&src=typed_query\" rel=\"noopener noreferrer\">#TimelineTerminationBan</a>. We have outlined it in our <a href=\"https://blog.shadowban.eu/#2019-10-16-here-we-go-again\" rel=\"noopener noreferrer\">first blogpost</a> and a new test is in development.</p><p>This then, however, requires a whole new approach of testing, which would definetly bring the current setup to its knees.</p><p>So if you feel that shadowban.eu brings you any value, please consider making a donation to our PayPal! Every bit helps keeping the site running and continuing our research.</p><h6>Thanks You! :)</h6>",
"donateButton": "Donate via PayPal",
"dismissButton": "No, thanks"
}
}
{
"limitVisibility": {
"title": "Twitter reserves the right to limit distribution or visibility of content",
"text": "The updated <a href=\"https://twitter.com/en/tos\" rel=\"noopener noreferrer\">Terms of Service</a> will go into effect on January 1, 2020."
},
"noShadowbanClaim": {
"title": "But Twitter claims that they do not shadowban",
"text": "In a <a href=\"https://blog.twitter.com/en_us/topics/company/2018/Setting-the-record-straight-on-shadow-banning.html\" rel=\"noopener noreferrer\">blog post from July 2018</a>, Twitter claims that they do not shadowban by defining shadowbanning as <i>deliberately making someone’s content undiscoverable to everyone except the person who posted it, unbeknownst to the original poster</i>. If you strictly follow Twitter's own definition, this may not be false because the key is discoverability. Later, Twitter provides a hint why this definition is deceptive by stating that you are <i>always able to see the tweets from accounts you follow (although you may have to do more work to find them, like go directly to their profile)</i>. The problem is obvious: Having to do more work to find tweets of accounts is not shadowbanning if you let Twitter define it. Although tweets within a thread may be completely invisible to others or tweets may not be shown in a user's followers' timelines, you will always be able to find those tweets by navigating to the user's \"Tweets &amp; replies\" section on their profile. In contrast to Twitter, we find that this is shadowbanning because without navigating there, it is not even possible for others to know that the corresponding tweets do exist.</p>"
},
"qfdTestGone": {
"title": "Why is the QFD test gone?",
"text": "<h5>Quality Filter Discrimination</h5> <p> QFD caused your tweets to be invisible within the latest section of the search, including hashtags, when the quality filter on the search page was turned on. The filter was turned on by default and would reset for each search anew. QFD was introduced on May 15, 2018 as part of Twitter's so-called <a href=\"https://blog.twitter.com/official/en_us/topics/product/2018/Serving_Healthy_Conversation.html\" rel=\"noopener noreferrer\">healthy conversation project</a>. </p> <p> The quality filter was deprecated shortly before Twitter CEO Jack Dorsey <a href=\"https://docs.house.gov/meetings/IF/IF00/20180905/108642/HHRG-115-IF00-Wstate-DorseyJ-20180905.pdf\" rel=\"noopener noreferrer\">testified before the United States House Committee on Energy and Commerce</a>. In his testimony, Dorsey stated the following:<br/> <i>Twitter recently made a change to how one of our behavior based algorithms works in search results. When people used search, our algorithms were filtering out those that had a higher likelihood of being abusive from the “Lastest\" tab by default. Those search results were visible in “Latest” if someone turned off the quality filter in search, and they were also in Top search and elsewhere throughout the product. Twitter decided that a higher level of precision is needed when filtering to ensure these accounts are included in “Latest” by default. Twitter therefore turned off the algorithm. As always, we will continue to refine our approach and will be transparent about why we make the decisions that we do.</i><br/> Currently, the quality filter seems to have no effect indeed. But please note that this is not a verification that users are not classified anymore by this algorithm. We just cannot observe it anymore through the quality filter. </p> <p>For documentation purposes, you still find the frequently answered questions about QFD here:</p> <ul id=\"qfdFAQ\" class=\"collapsible\"> <li> <div class=\"collapsible-header\"> <span>Does turning off the quality filter within my notification settings help?</span> </div> <div class=\"collapsible-body\"> <p> The quality filter within your notification settings only controls the notification you receive. Turning it off is recommended and will cause you to see more notifications which you would not have received otherwise. However, turning it off will not cause your own tweets to be more visible. </p> </div> </li> <li> <div class=\"collapsible-header\"> <span>How do I get into the QFD ban?</span> </div> <div class=\"collapsible-body\"> <p> A lot of interaction with accounts affected by QFD will likely cause your account to be affected by QFD soon, too. The absence of personal misbehavior does not guarantee an account to be unaffected. </p> </div> </li> <li> <div class=\"collapsible-header\"> <span>How do I get out of the QFD ban?</span> </div> <div class=\"collapsible-body\"> <p> Several German Twitter users that were affected by QFD have been experimenting with an Arabic follow-back botnet. The botnet generated a lot of followers for those who followed some accounts from this botnet. By accumulating many new followers that were not affected by QFD, at least 30 accounts were able to escape this type of ban. This is a strong hint that guilt by association is a major concept of the classifying algorithm. </p> </div> </li> <li> <div class=\"collapsible-header\"> <span>Is there a political bias?</span> </div> <div class=\"collapsible-body\"> <p> The quality filter indeed seems to mainly affect conservative and right-wing accounts. Testing over 2,000 contacts of two German left-wing extremist accounts did not yield a single account affected by QFD that would not be considered politically right. Testing 509 Twitter accounts from German members of Parliament yielded 14 affected accounts. All of them belong to the AfD, which is a German right-wing party. </p> </div> </li> <li> <div class=\"collapsible-header\"> <span>Does it only affect hashtags and the search? Why is it so bad then?</span> </div> <div class=\"collapsible-body\"> <p> We cannot tell whether the effects of QFD are limited to hashtags and the search. These are only the symptoms making the ban visible to us. It shows that Twitter is capable and willing to discriminate against accounts with certain political opinions. Since shadowbanning is a very unethical way to silence people already, it is possible for Twitter to apply methods that are harder to detect. Think of more subtle ways of banning by limiting the share of followers who a user's tweets are shown to. This would be a censorship method that could only be detected collectively by their followers. </p> </div> </li> </ul>"
},
"testerFunctions": {
"title": "How does this tester work?",
"text": "<h5>Search Ban</h5> <p> The Twitter search features several search modifiers. One of them is the prefix from: which allows to search for tweets from a specific user. For example, when checking whether <a href=\"https://twitter.com/shadowban_eu\" rel=\"noopener noreferrer\"> @shadowban_eu </a> has a shadowban, we query the Twitter search for <a href=\"https://twitter.com/search?f=tweets&vertical=default&q=from%3A%40shadowban_eu&src=typd&qf=off\" rel=\"noopener noreferrer\"> from:@shadowban_eu </a>. If we do not find any tweets although the user has tweeted in the past, the account is subject to a search ban. </p> <h5>Thread Ban</h5> <p> When the user has a search ban, the tester searches their profile for the latest tweet with at least one reply. It then visits the direct URL of the tweet and selects some reply tweet. Afterwards, the direct URL of the reply tweet is visited. If the tweet that the user replied to is not visible, the likelihood that the account is affected by a thread shadowban is very high. </p> <h5>QFD (deprectated)</h5> <p> When you upload an image, cite a tweet or link to an external page, Twitter generates a shortlink for that content. </p> <p> We first find a reference tweet using a combination of from: and filter: search modifiers. For example, <a href=\"https://twitter.com/search?f=tweets&q=from%3A%40shadowban_eu%20filter%3Alinks&src=typd\" rel=\"noopener noreferrer\"> from:@shadowban_eu filter:links </a> returns all tweets from <a href=\"https://twitter.com/shadowban_eu\" rel=\"noopener noreferrer\"> @shadowban_eu </a> containing a link. </p> <p> We simply pick one result tweet as reference and extract the shortlink, e.g. <a href=\"https://t.co/5Vzu63ypQJ\" rel=\"noopener noreferrer\"> https://t.co/5Vzu63ypQJ </a>.<br /> (This link points to a tweet, quoted <a href=\"https://twitter.com/shadowban_eu/status/1019242190277697538\" rel=\"noopener noreferrer\">here</a>). </p> <p> We then query the Twitter search for the tweet using the shortlink's URL with the quality filter turned on and off. If the reference tweet is found in both cases, the account is not affected by QFD. In case it is found only when the filter is turned off, it is affected. </p> <p> We chose this method because shortlinks are unique. Methodically, it does not differ from searching for text or a hashtag but the uniqueness of shortlinks is a technical advantage. </p>"
}
}
{
"checkUser": {
"message": "Test Results"
},
"checkBarrier": {
"message": "Reply Deboosting",
"description": {
"title": "Reply Deboosting",
"text": "If Twitter's signals determine that an account might engage in harmful behavior, Twitter hides their replies behind a barrier and only loads them when \"Show more replies\" is clicked. This behavior is personalized, i.e. Twitter does not hide the tweets of accounts you follow. We therefore use an unbiased reference account without followings in order to determine whether tweets within a thread can be retrieved without clicking \"Show more replies\" from its view.\nIn some cases, Twitter classifies accounts as offensive. In this case, replies are hidden behind a second barrier within the \"Show more replies\" section.<br/> The outcome of this test may depend on the conversation which we found one of your tweets in. For testing, we take your latest reply tweet that is not within a conversation you started. Note that test results are cached for a short period of time.<br/> A failure to test is neither a positive nor a negative test result. This test relies on some conditions that are not fulfilled by all accounts. In some cases, we cannot test for purely technical reasons."
}
},
"checkSuggest": {
"message": "Search Suggestion Ban",
"description": {
"title": "Search Suggestion Ban",
"text": "This type of ban causes an account to not populate search suggestions and people search results when it is searched for while being logged out. Twitter seems to take <a href=\"https://en.wikipedia.org/wiki/Social_network_analysis#Metrics\" target=\"_blank\" rel=\"noopener noreferrer\">tie strength</a> or a similar metric into account. While an account may be suggested to users you are strongly tied to, it may not be shown to others."
}
},
"checkSearch": {
"message": "Search Ban",
"description": {
"title": "Search Ban",
"text": "This type of ban causes your tweets to be hidden from the search results entirely, no matter whether the quality filter is turned on or off. This behavior includes hashtags as well. This type of ban seems to be temporally limited for active accounts."
}
},
"checkConventional": {
"message": "Ghost Ban",
"description": {
"title": "Ghost Ban",
"text": "This is what is referred to as conventional shadowban or thread banning as well. It comprises a search ban while threads are completely ripped apart by hiding reply tweets of the affected user to others. Everything will look perfectly normal to the affected user but many others will not be able to see reply tweets of the affected user at all. Reasons for this ban include behavior like excessive tweeting or following. Again, this type of ban seems to be temporally limited for active accounts."
}
}
}
{
"search": {
"text": "We {{foundOrNot}} by searching for {{searchLink}}.",
"notFound": "did not find a tweet",
"found": "found <a href=\"https://twitter.com/i/status/{{tweetId}}\" rel=\"noopener noreferrer\">a tweet</a>"
},
"barrier": {
"text": "We found <a href=\"https://twitter.com/i/status/{{replyToId}}\" rel=\"noopener noreferrer\">a tweet</a> which the user <a href=\"https://twitter.com/i/status/{{tweetId}}\" rel=\"noopener noreferrer\">replied to</a>.<br />{{explanation}}",
"highQuality": "The tweet was not hidden.",
"lowQuality": "We had to click \"Show more replies\" to view it{{abuse}}.",
"abuseQuality": " and we had to click a second time because the account is rated as potentially offensive"
},
"thread": {
"searchBanned": "A ghost ban implies a search ban. Since the account is not search banned, it cannot be ghost banned.",
"text": "We found <a href=\"https://twitter.com/i/status/{{tweetId}}\" rel=\"noopener noreferrer\">a tweet with at least one reply</a> on the user's profile. A <a href=\"https://twitter.com/i/status/{{replyId}}\" rel=\"noopener noreferrer\">reply tweet</a> is {{detached}} detached."
}
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="120px"
height="120px"
viewBox="0 0 100 100"
preserveAspectRatio="xMidYMid"
class="uil-gears"
version="1.1"
id="svg862"
sodipodi:docname="gears.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<metadata
id="metadata868">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs866" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1364"
inkscape:window-height="734"
id="namedview864"
showgrid="false"
inkscape:zoom="4.6166667"
inkscape:cx="60.108303"
inkscape:cy="60"
inkscape:window-x="0"
inkscape:window-y="18"
inkscape:window-maximized="1"
inkscape:current-layer="g856" />
<rect
x="0"
y="0"
width="100"
height="100"
fill="none"
class="bk"
id="rect852" />
<g
transform="translate(-20,-20)"
id="g856">
<path
d="M79.9,52.6C80,51.8,80,50.9,80,50s0-1.8-0.1-2.6l-5.1-0.4c-0.3-2.4-0.9-4.6-1.8-6.7l4.2-2.9c-0.7-1.6-1.6-3.1-2.6-4.5 L70,35c-1.4-1.9-3.1-3.5-4.9-4.9l2.2-4.6c-1.4-1-2.9-1.9-4.5-2.6L59.8,27c-2.1-0.9-4.4-1.5-6.7-1.8l-0.4-5.1C51.8,20,50.9,20,50,20 s-1.8,0-2.6,0.1l-0.4,5.1c-2.4,0.3-4.6,0.9-6.7,1.8l-2.9-4.1c-1.6,0.7-3.1,1.6-4.5,2.6l2.1,4.6c-1.9,1.4-3.5,3.1-5,4.9l-4.5-2.1 c-1,1.4-1.9,2.9-2.6,4.5l4.1,2.9c-0.9,2.1-1.5,4.4-1.8,6.8l-5,0.4C20,48.2,20,49.1,20,50s0,1.8,0.1,2.6l5,0.4 c0.3,2.4,0.9,4.7,1.8,6.8l-4.1,2.9c0.7,1.6,1.6,3.1,2.6,4.5l4.5-2.1c1.4,1.9,3.1,3.5,5,4.9l-2.1,4.6c1.4,1,2.9,1.9,4.5,2.6l2.9-4.1 c2.1,0.9,4.4,1.5,6.7,1.8l0.4,5.1C48.2,80,49.1,80,50,80s1.8,0,2.6-0.1l0.4-5.1c2.3-0.3,4.6-0.9,6.7-1.8l2.9,4.2 c1.6-0.7,3.1-1.6,4.5-2.6L65,69.9c1.9-1.4,3.5-3,4.9-4.9l4.6,2.2c1-1.4,1.9-2.9,2.6-4.5L73,59.8c0.9-2.1,1.5-4.4,1.8-6.7L79.9,52.6 z M50,65c-8.3,0-15-6.7-15-15c0-8.3,6.7-15,15-15s15,6.7,15,15C65,58.3,58.3,65,50,65z"
fill="#4c5630"
id="path854"
style="fill:#c53dc5;fill-opacity:1">
<animateTransform
attributeName="transform"
type="rotate"
from="90 50 50"
to="0 50 50"
dur="1s"
repeatCount="indefinite" />
</path>
</g>
<g
transform="translate(20,20) rotate(15 50 50)"
id="g860">
<path
d="M79.9,52.6C80,51.8,80,50.9,80,50s0-1.8-0.1-2.6l-5.1-0.4c-0.3-2.4-0.9-4.6-1.8-6.7l4.2-2.9c-0.7-1.6-1.6-3.1-2.6-4.5 L70,35c-1.4-1.9-3.1-3.5-4.9-4.9l2.2-4.6c-1.4-1-2.9-1.9-4.5-2.6L59.8,27c-2.1-0.9-4.4-1.5-6.7-1.8l-0.4-5.1C51.8,20,50.9,20,50,20 s-1.8,0-2.6,0.1l-0.4,5.1c-2.4,0.3-4.6,0.9-6.7,1.8l-2.9-4.1c-1.6,0.7-3.1,1.6-4.5,2.6l2.1,4.6c-1.9,1.4-3.5,3.1-5,4.9l-4.5-2.1 c-1,1.4-1.9,2.9-2.6,4.5l4.1,2.9c-0.9,2.1-1.5,4.4-1.8,6.8l-5,0.4C20,48.2,20,49.1,20,50s0,1.8,0.1,2.6l5,0.4 c0.3,2.4,0.9,4.7,1.8,6.8l-4.1,2.9c0.7,1.6,1.6,3.1,2.6,4.5l4.5-2.1c1.4,1.9,3.1,3.5,5,4.9l-2.1,4.6c1.4,1,2.9,1.9,4.5,2.6l2.9-4.1 c2.1,0.9,4.4,1.5,6.7,1.8l0.4,5.1C48.2,80,49.1,80,50,80s1.8,0,2.6-0.1l0.4-5.1c2.3-0.3,4.6-0.9,6.7-1.8l2.9,4.2 c1.6-0.7,3.1-1.6,4.5-2.6L65,69.9c1.9-1.4,3.5-3,4.9-4.9l4.6,2.2c1-1.4,1.9-2.9,2.6-4.5L73,59.8c0.9-2.1,1.5-4.4,1.8-6.7L79.9,52.6 z M50,65c-8.3,0-15-6.7-15-15c0-8.3,6.7-15,15-15s15,6.7,15,15C65,58.3,58.3,65,50,65z"
fill="#f7faf8"
id="path858"
style="fill:#1da1f2;fill-opacity:1">
<animateTransform
attributeName="transform"
type="rotate"
from="0 50 50"
to="90 50 50"
dur="1s"
repeatCount="indefinite" />
</path>
</g>
</svg>
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="utf-8" />
<title>Twitter Shadowban Test</title>
<meta description="Determine wether a Twitter user is shadow banned" />
<meta
name="keywords"
content="Twitter, Shadowban, Shadowbanned, Ban, Block, Quality Filter, QFD"
/>
<meta
name="viewport"
content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1"
/>
<meta property="og:title" content="Twitter Shadowban Test" />
<meta
property="og:description"
content="Are you shadowbanned on Twitter?"
/>
<meta
property="og:image"
content="https://www.shadowban.eu/img/sm_preview.png"
/>
<meta property="og:url" content="https://www.shadowban.eu/" />
<meta property="og:site_name" content="Twitter Shadowban Test" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:image:alt" content="shadwoban.eu" />
<base target="_blank" href="" />
<link rel="manifest" href="/manifest.json" />
<link rel="prefetch" href="./img/gears.svg" />
<link
href="https://fonts.googleapis.com/icon?family=Material+Icons"
rel="stylesheet"
/>
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Roboto:300,400,500"
/>
<link
href="https://fonts.googleapis.com/css?family=Lobster"
rel="stylesheet"
/>
<link rel="shortcut icon" href="favicon.png" />
<link
href="css/app.7e49fbf.css?7e49fbfe38c37a7a572e"
rel="stylesheet"
/>
</head>
<body>
<section class="header section">
<div class="row">
<div class="col s12">
<div class="loadable-container">
<h2
id="headerScreenName"
data-i18n="common:title"
class="loadable loading"
>
{{common:title}}
</h2>
</div>
</div>
</div>
<div class="row header-buttons">
<div class="col 6">
<div class="loadable-container">
<button
class="
btn
modal-trigger
waves-effect waves
white
loadable
loading
"
data-target="donate-modal"
data-i18n="common:buttons.support"
>
{{common:buttons.support}}
</button>
<div id="donate-thanks" class="hide">
Thank you for your donation!
</div>
</div>
</div>
<div class="col 6 hiddendiv">
<div class="loadable-container">
<button
class="
btn
install-trigger
waves-effect waves
white
loadable
loading
"
data-i18n="common:buttons.install"
>
{{common:buttons.install}}
</button>
</div>
</div>
</div>
</section>
<section id="controls" class="row">
<div class="col s12 offset-m1 m10 offset-l2 l8 center-align">
<div class="loadable-container">
<div class="card valign-wrapper loadable loading">
<div class="input-field">
<span class="prefix">@</span>
<input
id="screenName"
type="text"
autocomplete="nickname"
required
pattern="^[A-Za-z0-9_]{1,15}$"
data-position="bottom"
data-tooltip="Please provide a valid Twitter @handle!"
maxlength="15"
/>
<label
for="screenName"
data-i18n="common:screenNameDefault"
>{{common:screenNameDefault}}</label
>
</div>
<div>
<button
id="check"
class="waves-effect waves white btn btn-flat"
data-i18n="common:buttons.check"
>
{{common:buttons.check}}
</button>
</div>
</div>
</div>
</div>
</section>
<section id="results" class="row">
<div class="col s12 offset-m1 m10 offset-l2 l8 center-align">
<div class="loadable-container">
<ul id="tasks" class="collapsible loadable loading"></ul>
</div>
</div>
</section>
<section class="row">
<div class="col s12 offset-m1 m10 offset-l2 l8">
<div class="loadable-container">
<ul
id="functionality"
class="collapsible popout loadable loading"
>
<li>
<div class="flex-col collapsible-header">
<span
class="attention"
data-i18n="functionality:limitVisibility.title"
>{{functionality:limitVisibility.title}} </span
><span
class="text-strike font-small"
data-i18n="functionality:noShadowbanClaim.title"
>{{functionality:noShadowbanClaim.title}}</span
>
</div>
<div class="collapsible-body">
<p
class="noban-claim"
data-i18n="functionality:limitVisibility.text"
>
{{functionality:limitVisibility.text}}
</p>
<img
class="materialboxed"
width="100%"
src="/img/updated-tos.png"
/>
<p
class="noban-claim-legacy"
data-i18n="functionality:noShadowbanClaim.text"
>
{{functionality:noShadowbanClaim.text}}
</p>
</div>
</li>
<li>
<div
class="collapsible-header"
data-i18n="functionality:qfdTestGone.title"
>
{{functionality:qfdTestGone.title}}
</div>
<div
class="collapsible-body"
data-i18n="functionality:qfdTestGone.text"
>
{{functionality:qfdTestGone.text}}
</div>
</li>
<li>
<div
class="collapsible-header"
data-i18n="functionality:testerFunctions.title"
>
{{functionality:testerFunctions.title}}
</div>
<div
class="collapsible-body"
data-i18n="functionality:testerFunctions.text"
>
{{functionality:testerFunctions.text}}
</div>
</li>
</ul>
</div>
</div>
</section>
<footer class="section">
<div class="row">
<div class="col offset-s2 s8 center-align">
<br />Made in Germany by
<a
href="https://twitter.com/shadowban_eu"
target="_blank"
rel="noopener noreferrer"
>@shadowban_eu</a
>
</div>
</div>
</footer>
<div id="task-item-template" class="hide">
<li data-task-id="NOTICE--{{task.id}}--ME">
<div class="collapsible-header" data-task-component="header">
<i
class="material-icons notranslate"
data-task-component="icon"
></i>
<div class="task-message" data-task-component="message">
<span></span>
</div>
<div class="result-hint" data-task-component="hint">
<i class="material-icons">info</i>
<i class="material-icons active-indicator"
>arrow_drop_down</i
>
</div>
</div>
<div
class="collapsible-body left-align"
data-task-component="description"
>
<h5></h5>
<p></p>
<ul
id="NOTICE--{{task.faq.id}}--ME"
class="collapsible hide"
data-task-component="faq"
>
<li class="techInfo">
<div class="collapsible-header">
<span
>Technical information about the
result</span
>
</div>
<div class="collapsible-body">
<p class="techContent"></p>
</div>
</li>
</ul>
</div>
</li>
</div>
<div id="qf-setting-toast-template" class="hide">
<div class="row">
<div class="col s12" data-i18n="common:qfSettingToast">
{{common:qfSettingToast}}
</div>
</div>
<div class="row">
<div class="col s12 center">
<button class="btn-flat toast-action">OK</button>
</div>
</div>
</div>
<div id="donate-modal" class="modal modal-fixed-footer">
<div class="modal-content" data-i18n="common:supportModal.content">
{{common:supportModal.content}}
</div>
<div class="modal-footer">
<a
href="https://www.paypal.me/shadowban"
class="waves-effect waves white btn modal-close"
data-i18n="common:supportModal.donateButton"
>{{common:supportModal.donateButton}} </a
><a
class="waves-effect waves white btn modal-close"
data-i18n="common:supportModal.dismissButton"
>{{common:supportModal.dismissButton}}</a
>
</div>
</div>
<div class="ph-item">
<div class="ph-col-12"><div class="ph-picture"></div></div>
</div>
<script src="js/app.7e49fbf.js?7e49fbfe38c37a7a572e"></script>
<script src="./worker.js?7e49fbfe38c37a7a572e"></script>
</body>
</html>
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"short_name": "Shadowban.eu",
"name": "Twitter Shadowban Test",
"icons": [
{
"src": "/favicon/favicon_32.png",
"sizes": "32x32 24x24 16x16",
"type": "image/png"
},
{
"src": "/favicon/favicon_64.png",
"sizes": "64x64",
"type": "image/png"
},
{
"src": "/favicon/favicon_192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "/favicon/favicon_512.png",
"type": "image/png",
"sizes": "512x512"
}
],
"start_url": "/",
"display": "standalone",
"theme_color": "#1481c3",
"background_color": "#1481c3",
"share_target": {
"action": "/share",
"method": "GET",
"enctype": "application/x-www-form-urlencoded",
"params": {
"text": "text"
}
}
}
!(function (e) {
var t = {};
function n(r) {
if (t[r]) return t[r].exports;
var o = (t[r] = { i: r, l: !1, exports: {} });
return e[r].call(o.exports, o, o.exports, n), (o.l = !0), o.exports;
}
(n.m = e),
(n.c = t),
(n.d = function (e, t, r) {
n.o(e, t) ||
Object.defineProperty(e, t, { enumerable: !0, get: r });
}),
(n.r = function (e) {
"undefined" != typeof Symbol &&
Symbol.toStringTag &&
Object.defineProperty(e, Symbol.toStringTag, {
value: "Module",
}),
Object.defineProperty(e, "__esModule", { value: !0 });
}),
(n.t = function (e, t) {
if ((1 & t && (e = n(e)), 8 & t)) return e;
if (4 & t && "object" == typeof e && e && e.__esModule) return e;
var r = Object.create(null);
if (
(n.r(r),
Object.defineProperty(r, "default", {
enumerable: !0,
value: e,
}),
2 & t && "string" != typeof e)
)
for (var o in e)
n.d(
r,
o,
function (t) {
return e[t];
}.bind(null, o)
);
return r;
}),
(n.n = function (e) {
var t =
e && e.__esModule
? function () {
return e.default;
}
: function () {
return e;
};
return n.d(t, "a", t), t;
}),
(n.o = function (e, t) {
return Object.prototype.hasOwnProperty.call(e, t);
}),
(n.p = ""),
n((n.s = 34));
})({
34: function (e, t) {
self.addEventListener("fetch", function () {});
},
});
python-3.9.9
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment