redlib-org / redlib

Private front-end for Reddit
GNU Affero General Public License v3.0
1.41k stars 101 forks source link

🐛 Bug Report: Limit on subscribed subreddits #279

Open BugZappa opened 1 month ago

BugZappa commented 1 month ago

Crate version 0.35.1

Describe the bug

It appears the old LIbreddit bug still plagues RedLib where if the cookie containing subscribed subreddits reaches the maximum size limit of 4096B then RedLib will refuse to subscribe to anymore subreddits.

Steps to reproduce the bug

  1. Follow this old guide on importing reddit subscriptions to RedLib (Ideally you want a lot of subscriptions)
Example link Example: https://REPLACE.ME/r/13or30+195+2healthbars+90sHipHop+AbruptChaos+ACAB+adoptParentApp+Advice+Alabama+Amd+AMDHelp+AmputatorBot+AnimalsBeingBros+AnimalsBeingJerks+AnimalsBeingMoms+anonymous+antimaskers+Anxiety+apple+ArcherFX+Art+AryaWinsTheThrone+AskQuestion+AskReddit+AskRedditAfterDark+assholedesign+ASUS+audiophile+AverageBattlestations+aves+AwesomeOffBrands+aww+AxolotlThursdays+BaldursGate3+balisong+bantiktok+battlefield_4+battlestations+beetlejuicing+bestoflegaladvice+biggie+BirdsArentReal+bitchimagoose+Bitcoin+bl2modding+BlueMountainState+Bluetooth_Speakers+BoneAppleTea+Bongs+books+Boondocks+Borderlands+Borderlandsshiftcodes+bowlingalleyscreens+BrandNewSentence+britishcolumbia+BTTO+BudgetAudiophile+bugs+buildapc+buildapcforme+buildapcsales+Bumble+burnaby+byebyejob+CallOfDuty+canada+canadaguns+CanadaPolitics+Canadian_ecigarette+CasualConversation+CatSlaps+CBD+CensoringIsHard+clevercomebacks+CoilGore+Coilporn+CombatFootage+comedyheaven+ConvenientCop+Cooking+coquitlam+Coronavirus+CorpFree+counting+CrappyDesign+crappyoffbrands+cravetv+CrazyFuckingVideos+creepy+Cubers+cursedcomments+cyberpunkgame+cybersecurity+DaenerysWinsTheThrone+Damnthatsinteresting+dank_meme+dankmemes+darknet+dataisbeautiful+DataPolice+dating+dating_advice+deAmazon+deapple+decentralization+DecentralizedWeb+DeFacebook+degoogle+deMicrosoft+DeskCableManagement+devops+discordapp+discordbotlist+DisneyPlus+DIY_eJuice+doctors+DoesAnybodyElse+dogs_getting_dogs+dontdeadopeninside+dontputyourdickinthat+DontSubscribeDumbAss+DownvotedToOblivion+drawing+duckduckgo+DystopiaForReddit+ECR_Gaming+EDM+eff+electricdaisycarnival+ElectricForest+electronic_cigarette+Excision+extremelyinfuriating+Eyebleach+fabrication+festivals+FiftyFifty+firefox+FirefoxCSS+fireTV+FloridaMan+food+foundthemobileuser+freesoftware+FuckNestle+FuckTravisScott+FUCKYOUINPARTICULAR+FuckYouKaren+funny+futurama+FVDED+G502MasterRace+gameofthrones+gaming+gamingnews+GendryWinsTheThrone+gifs+Glocks+gonewildaudio+greentext+GTA+Gta5Modding+guns+GYM+GymMotivation+gzcl+halo+halomods+HaloWars+HaloWars2+happycowgifs+happycryingdads+hardware+help+HermanCainAward+holdmybeer+holdmycosmo+HolUp+homebridge+homelab+HomeNetworking+HostileArchitecture+HTSDOF+iamatotalpieceofshit+IdiotsFightingThings+IdiotsInCars+IdiotsNearlyDying+IdiotsOnBikes+idiotsoutofcars+ihadastroke+IllegallySmolCats+InsanePeopleQuora+instant_regret+interestingasfuck+iOSBeta+iOSthemes+IRLEasterEggs+jailbreak+JamesFridman+JBL+Jokes+JonWinsTheThrone+Justfuckmyshitup+KamikazeByWords+kflay+KidsAreFuckingStupid+killthecameraman+LearningFromOthers+legaladvice+legaladvicecanada+legaladviceofftopic+linux+linuxhardware+linuxmasterrace+livecounting+lostredditors+MadeMeSmile+MakeWay+MayansMC+meatcrayon+memes+memesopdidnotlike+MensLib+microdosing+microsoft+MicrosoftRewards+mildlyinfuriating+misfitstv+MissandeiWinsAThrone+MkeBucks+Motherboard+motorcycles+MurderedByWords+MyPeopleNeedMe+NamFlashbacks+NatureIsFuckingLit+nba+needadvice+netflix+NetflixViaVPN+netneutrality+networking+nevertellmetheodds+news+NewWest+nextfuckinglevel+NiceVancouver+NoNewNormalBan+NoNewNormalDisgrace+NoNoNewNormal+NoStupidQuestions+nottheonion+NSFWMemes+nvidia+NZXT+oddlyspecific+oddlyterrifying+OldPhotosInRealLife+OldSchoolCool+onguardforthee+onions+opsec+OSHA+OutOfTheLoop+overclocking+Pareidolia+pcmasterrace+PerkByDaylight+PhonesAreBad+photographs+photoshopbattles+pics+place+podcasts+polls+pop_punk+PornhubComments+PortCoquitlam+privacy+PrivacyGuides+privacyhardware+privacytoolsIO+projectsession+ProtonMail+PublicFreakout+PublicFreakoutX+qBittorrent+Qubes+QuitVaping+quityourbullshit+r4r+Rainbow6+Rainbow6TTS+rant+rap+rareinsults+rarepuppers+rayvolpe+RBI+RDA+ReadyOrNotGame+reallifedoodles+recipes+redditdev+redditmoment+RedditSafety+relationship_advice+restofthefuckingowl+righttorepair+RoastMe+rockstar+roosterteeth+SansaWinsTheThrone+Save3rdPartyApps+Scams+SCREENPRINTING+Second+seduction+selfhosted+SelfSufficiency+sex+ShakeAndVape+shittyaskscience+shittybattlestations+ShittyShittyRainbow6+shittysuperpowers+shutuphapydog+SiegeAcademy+snackexchange+snapchat+SneakersCanada+software+softwaregore+southpark+Splintercell+sports+StandUpComedy+StartledCats+stocks+StonerEngineering+SubsIFellFor+surfshark+SurreyBC+suspiciouslyspecific+sysadmin+tacticalgear+tails+tech+technicallythetruth+technology+TechnologyDetox+TechNope+techsupport+techsupportgore+thanksihateit+ThatLookedExpensive+theboondocks+TheLeftCantMeme+therewasanattempt+ThingsCutInHalfPorn+TIHI+tiktok_reversing+Tinder+TOR+TyrionWinsTheThrone+u_aka_Scratch+u_AmputatorBot+u_bbegg32+u_BobertoBoo+u_c0dycode+u_crimefaces+u_CyberGhostVPN+u_Doctorphotograph+u_hapydog+u_KeepingDankMemesDank+u_larossmann+u_majornelson+u_rhythmic_thumbdrive+u_smoant_official+u_Xbox-Insider+u_YokeThaJoker+UNBGBBIIVCHIDCTIICBG+UnethicalLifeProTips+unexpectedarcher+UnexpectedOuija+unexpectedpawnee+Unicode+unrealengine+untrustworthypoptarts+vancouver+Vancouver4Friends+VancouverJobs+Vape_Porn+VapePorn+Vaping+vaxxhappened+videos+vinyl+VOXEL+VPN+vpncoupons+vpnreviews+WeAreWhoWeAre+weed+weirdspotifyplaylists+Welding+westworld+Whatcouldgowrong+WhyWereTheyFilming+windows+Windows10+windowsinsiders+WinStupidPrizes+woooosh+worldnews+WTF+xbox+xboxinsiders+xboxone+yesnoyesnoyesno+yesyesyesyesno+youdontmattergiveup+youdontsurf+YourJokeButWorse+yubikey
  1. Click on "Subscribe to Multireddit"
  2. Notice nothing will happen -->

What's the expected behavior?

All specified subreddits are subscribed to and saved into one or multiple cookies.

ButteredCats commented 1 month ago

Doing some testing of my own and looking through the old issue this is caused by the browser rejecting the cookie for being too large, as Redlib does send the correct set-cookie header (you can verify this using curl or the devtools in your browser).

Chrome actually gives a notice in the devtools that it was blocked for being too large, stating "must be less than or equal to 4096 characters" and apparently most browsers impose this limit as well after doing a search online.

So it looks like the only real solution is to split the subscriptions into multiple cookies, as using the browser's local storage requires javascript.

My only thought is how would you keep a large multireddit subscription like this marked as a single entry rather than different ones when they get split across different cookies? Maybe assign them some sort of ID at their beginning so you'd have Cookie1: subcriptions1=MULTIREDDITID-sub+sub+sub Cookie2: subcriptions2=MULTIREDDITID-sub+sub+sub and they can continue to be identified as one large multireddit subscription?

Other than that I don't see any logistical issues. If I have time I might take a crack at it myself but no promises.

ButteredCats commented 1 month ago

Just had an idea as a temp work around for anyone experiencing this. If you're using Firefox you can use devtools to manually update the subscriptions cookie to whatever you want to subscribe with, this bypasses the size limit.

Unfortunately it doesn't seem to work with Chrome.