Skip to content

Instantly share code, notes, and snippets.

@jaydorsey
Last active November 13, 2024 22:25
Show Gist options
  • Save jaydorsey/d728423051fbcb54f1abd53ed3920c9e to your computer and use it in GitHub Desktop.
Save jaydorsey/d728423051fbcb54f1abd53ed3920c9e to your computer and use it in GitHub Desktop.
uBlock for LinkedIn
# Block things on LinkedIn with uBlock Origin that LinkedIn won't let you block
# Choose "Options" in uBlock Origin with a right-click, and add these to
# "My filters"
# ADDING YOUR OWN FILTERS
#
# Using Linkedin.com as an example
#
# 1. Open up the webpage
# 2. Find some text you want to block
# 3. Open up a console (right-click, Inspect, click the Console tab)
# 4. Using the "greedy" placeholder example, find your text
#
# $x("//*[(text()[contains(.,'YOUR TEXT HERE')])]")
#
# Click the arrow to expand the result in the console and hover over
# one of the numbered elements shown; it should highlight an element in
# the webpage
#
# The code above usually just finds the HEADER where the text is present. You typically
# want to block one of the parent elements. Which parent element?
#
# You can use the xpath parent navigator syntax to move "up" thru the parents. Just
# take what you wrote above, and keep adding a bunch of /.. values to the end. In between
# each, expand the result in your console and hover over the elements to see if you've
# moved up the tree enough to block the entire element you want
# 2023-10-07 So many recommendations from LinkedIn
linkedin.com##:xpath('//*[(text()[contains(., "Suggested")])]/../../../../../../../../../..')
linkedin.com##:xpath('//*[(text()[contains(., "Expert answers on ")])]/../../../../../../../../../..')
linkedin.com##:xpath('//*[(text()[contains(., "Recommended for you")])]/../../../../../../../../../..')
linkedin.com##:xpath('//*[(text()[contains(.,"Events recommended for you")])]/../../../../../../../../../..')
# 2020-02-24 Promoted posts
linkedin.com##xpath('.//span[contains(@class, "feed-shared-actor__sub-description") and text()[contains(.,"Promoted")]]/../../../..')
# 2023-01-23 Promoted posts (thanks @Vaansh! & @kagzgenius)
linkedin.com##li:has-text(Promoted)
# Sponsored posts (old version)
linkedin.com##:xpath('//*[(text()[contains(.,"Promoted")])]/../../../..')
# Events recommended for you 2023-03-03
linkedin.com##:xpath(//span[text()[contains(.,'Events recommended for you')]]/../../../../../..)
# Recommended for you 2023-03-03 Generic recommendation block w/ companies or pages
linkedin.com##:xpath(//span[text()[contains(.,'Recommended for you')]]/../../../../../..)
# 2021-09-24 Add to your feed
linkedin.com##:xpath('//*[(text()[contains(.,"Add to your feed")])]/../../../../../../..')
# Courses & News 2021-09-24
linkedin.com##:xpath('//*[(text()[contains(.,"Today’s top courses")])]/../../../..')
# Completely unrelated jobs that are always the exact opposite of your profile
linkedin.com##:xpath('//*[(text()[contains(.,"Jobs recommended for you")])]/../../../../../../..')
# 2022-12-06
linkedin.com##:xpath(//span[(text()[contains(.,'Recommended for you')])]/../../../../../../../../../..)
linkedin.com##:xpath(//span[(text()[contains(.,'Events recommended for you')])]/../../../../../../../../../..)
# LinkedIn News 2023-03-03
linkedin.com##:xpath(//span[text()[contains(.,'LinkedIn News')]]/../../..)
# I think this one stopped working, but leaving here for reference
linkedin.com##:xpath('//*[(text()[contains(.,"LinkedIn News")])]/../../../../../..')
# Network likes 2023-03-03
linkedin.com##:xpath(//span[text()[contains(.,'likes this')]]/../../../../..)
# Starting a new position banner image 2023-03-03
linkedin.com##:xpath(//div[contains(@class, 'feed-shared-celebration-image')])
# Facebook junk (no longer updated, I don't use facebook)
# Sponsored post garbage
facebook.com##:xpath('//*[(text()[contains(.,"Sponsored")])]/../../../..')
# Marketplace garbage
facebook.com##:xpath('//*[(text()[contains(.,"Still Available on Marketplace")])]/../../../../../..')
@corridordigital
Copy link

Amazing ! thank you @superresistant and @RiskTolerance
Still couldn't manage to filter out spammy polls.
I think I could use PollComponent and DynamicPollComponent :)

@jsc0ded
Copy link

jsc0ded commented Dec 7, 2023

Going ham on ubo attempting to block Promoted posts, nothing is working. WTH?

linkedin.com##li:has-text(Promoted)
linkedin.com##li:has-text(/^Promoted$)
linkedin.com##span:has-text(Promoted):upward(6)
linkedin.com##span:has-text(/^Promoted$/):upward(8)
linkedin.com##xpath('.//span[contains(@class, "feed-shared-actor__sub-description") and text()[contains(.,"Promoted")]]/../../../..')
linkedin.com##:xpath('//*[(text()[contains(.,"Promoted")])]/../../../..')
linkedin.com##:xpath(//span[text()[contains(.,'Promoted')]]/../../../../../../../../../../..)
linkedin.com##:xpath('//*[(text()[contains(.,"Promoted")])]/../../../..')
linkedin.com##:matches-path(/feed):xpath('//*[(text()[contains(.,"Promoted")])]/../../../../../..')
linkedin.com##:matches-path(jobs/search):xpath('//*[(text()[contains(.,"Promoted")])]/../../../../../..')

@realAzazello
Copy link

linkedin.com##li:has-text(Promoted)

On the job search-results pages, this works for me - uBO 1.54.0, Firefox. In fact, I'ld go mad if it didn't.

@jsc0ded
Copy link

jsc0ded commented Dec 7, 2023

Firefox

Is what's different. This now works, but literally no results are returned which is weird b/c it implies all posts are promoted...

@MoeQatoum
Copy link

amazing job! thanks !

@pkirkovsky
Copy link

pkirkovsky commented Feb 3, 2024

@jaydorsey Do you want to turn this into a repo so we can submit PRs? I am also considering making a general "clean UI" stylesheet/filter list/plugin that would involve a lot more modifications.

@jaydorsey
Copy link
Author

@jaydorsey Do you want to turn this into a repo so we can submit PRs? I am also considering making a general "clean UI" stylesheet/filter list/plugin that would involve a lot more modifications.

I don't have time to manage and moderate, but I think making it a repo is a good idea.

I suspect most people found this gist via a Google search (it shows as a top result for unlock LinkedIn)

If you or anyone else wants to create a repo, I'll edit my gist with a note & add a link to it.

@PolarGoose
Copy link

PolarGoose commented Mar 14, 2024

@jaydorsey,

Thank you and all the other participants for such a helpful blocking list.
Just in case, I'm using the following subset that works at the moment I'm writing this post:

linkedin.com##li:has-text(Promoted)
linkedin.com##:xpath('//*[(text()[contains(.,                 "Suggested")])]/../../../../../../../../../..')
linkedin.com##:xpath('//*[(text()[contains(.,        "Expert answers on ")])]/../../../../../../../../../..')
linkedin.com##:xpath('//*[(text()[contains(.,       "Recommended for you")])]/../../../../../../../../../..')
linkedin.com##:xpath('//*[(text()[contains(.,"Events recommended for you")])]/../../../../../../../../../..')
linkedin.com##:xpath(//span[text()[contains(.,'likes this')]]/../../../../..)

Copy and paste it to the uBlock's My Filters tab and click Apply changes
image

@sumanthvadde
Copy link

sumanthvadde commented Mar 17, 2024

Hi I'm unable to see any jobs when I enable the filter to remove promoted filter. It does render again but I find jobs on very limited of those pages. Does it work on chrome

@realAzazello
Copy link

Hi I'm unable to see any jobs when I enable the filter to remove promoted filter. It does render again but I find jobs on very limited of those pages.

Blocking 'Promoted' listings on Linkedin is like that old joke:

Person: Hey Doc! Everytime I twisted arm like this, I get a terrible pain.
Doctor: Then don't do that.

The pain is Linkedin: they're pushing more&more listings to be paid ie 'Promoted'. It seems most listings already are. Who knows if/when they'll block free listings.

So don't block 'Promoted' ; instead filter on job Title, Company name or Location like I described here.

@sumanthvadde
Copy link

Thanks a lot for this suggestion. Appreciate it. Had to block this staffing agencies which had 100's of jobs on Linkedin. It does help me with that and make my search effective !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment