scytale,
  • Mlem - knows exactly that it’s Mlem.
  • Memmy - sees Mobile Safari webkit.
  • Voyager - same as Memmy.
  • Thunder - just sees Mobile Client.
moonsnotreal,
@moonsnotreal@lemmy.blahaj.zone avatar
  • Jerboa - also just sees a Mobile Client
Zenaida_macroura,
  • Infinity for Lemmy - just says Android
Lmaydev,
  • Connect - also says a mobile client
TheButtonJustSpins,

Same for Liftoff on Android

CookieJarObserver,
@CookieJarObserver@sh.itjust.works avatar

My connection says that im viewing it from a unknown device

1984,
@1984@lemmy.today avatar

Doesn’t know it’s sync.

genfood,
@genfood@feddit.de avatar
  • Lemmios
roon,
@roon@lemmy.ml avatar
DrQuint,

Which would be correct as Voyager is a Web App

jozo,

What does it say? on jerboa is states that i use unknown mobile client, with infinity, android client. All i have is adaway on my phone

ares35,
@ares35@kbin.social avatar

for a little extra creepiness, modify the image-generating script to add geoip location data and http referer to the image.

TriLinder,
@TriLinder@lemmy.ml avatar

Thought about adding the user’s location, but was worried PythonAnywhere could somehow cache the image between multiple people.

DavyJones,
@DavyJones@lemmy.dbzer0.com avatar
Blizzard,

What is it supposed to say?

“You are viewing this from The Black Pearl, Davy Jones.”

Kissaki,
@Kissaki@feddit.de avatar

It names your browser and OS.

ares35,
@ares35@kbin.social avatar

it got mine wrong because i change default useragent and platform in the browser.

shortypig,

So what is happening if I don’t see an image?

A_A,
@A_A@lemmy.world avatar

it is because the website providing the image is overloaded and cannot create an image.
You just have to reload the image and eventually you will see one.

WtfEvenIsExistence,

Hey FBI dude, I’m jerkin’ it, can you gimme some time alone?

kitonthenet,

Whoa I m totally pigged out

Zetaphor,

Salient demonstration, but if image proxying were to come to Lemmy I’d hope it was made optional, as it could overburden smaller instances, especially one-person instances (like mine). We also need a simple integrated way of configuring object storage.

ReversalHatchery,

A better solution could be having an image proxy as a separate service, and somehow managing a list of proxies that are used for loading the image. Of course the clients themselves would have to deal with choosing to use the proxy… except if the backend serves the proxied image URL instead of the original one (and maybe that too under a new name)

WhatAmLemmy,

Lemmy clients should really include an option to group or only show the first instance of a link for cases like this; where the same link is posted to multiple places.

Drinvictus,

Holy shit. How do we avoid this? VPN?

Erika2rsis,
@Erika2rsis@lemmy.blahaj.zone avatar

I would say a user agent spoofer would be more useful for this particular image. The Mozilla team recommends User-Agent Switcher and Manager for Firefox users.

ForestOrca, (edited )
@ForestOrca@kbin.social avatar

Where can I learn more about using this Firefox extension? I've installed it, but it hasn't changed the results of (https://trilinder.pythonanywhere.com/image.jpg).

I see I am able to black list pythonanywhere.com.

Erika2rsis,
@Erika2rsis@lemmy.blahaj.zone avatar

Here’s a six-minute YouTube video explaining how to use it

TL;DW: Click on the extension icon, use the drop-down lists to find a browser and OS, select a pre-configured user-agent string from the list, and click “apply (container)” or “apply (all windows)”. Having your user-agent string change randomly with each request is possible but requires writing a bit of JSON in the options.

ForestOrca,
@ForestOrca@kbin.social avatar

TY!! That link works on Invidious, Yay! I'll check it when I get a break.

TriLinder,
@TriLinder@lemmy.ml avatar

That’s weird. The extension should definitely work with the image, as that’s what I used when building this quick demo. Does the content of a site like this update?

CookieJarObserver, (edited )
@CookieJarObserver@sh.itjust.works avatar

Next DNS Blocks it apparently.

Fissionami,
@Fissionami@lemmy.ml avatar

Wow! But mine didn’t. Which filter lists are you using?

CookieJarObserver,
@CookieJarObserver@sh.itjust.works avatar

Well… Basically all…

Slotos,

By not using internet. No, seriously, if you access something over the internet, you will leave tracks. This here post is nothing new or inherently scary on its own. I used to have forum signatures that would tell people what browser they were using or from what IP they were coming.

What you really want to do is disable third party cookies on everything you own. That (and things like hsts super cookies) is what tracks you.

If you’re using an app to browse Lemmy, you might ask for their implementation to reject cookies and fingerprinting attempts when displaying images and other embeddables.

a minute later edit: And yeah, if you don’t like web services to know the IP address given to you by your ISP, VPN is a decent option.

ReversalHatchery,

No, seriously, if you access something over the internet, you will leave tracks.

It’s quite the difference between leaving tracks on only one provider’s servers (where your account is hosted), and leaving tracks all over the internet.

There were a few comments under this post about how (easily!) this could be used to find out the IP address and though it the rough location of a commenter.

Slotos,

Lemmy proxying image loads won’t fix this issue at all. Unless you only ever access resources through it, which you won’t. It will even make the problem worse by exposing a single attack surface.

Don’t trust the collection of random internet services to protect interests they are not set out to protect. You wanna hide your IP? Use VPN or Tor.

I mean, Stallman has a point here.

Hamartiogonic,
@Hamartiogonic@sopuli.xyz avatar

I’m using a VPN, and the picture knows everything about me regardless.

ricecake,

It’s not nearly as nefarious as people seem to think. Effectively all applications that access web resources send along what they are and basic platform information.
This is part of how the application asks for content in a way that it can handle
It does a little to let you be tracked, but there are other techniques that are far more reliable for that purpose.

PoliticalAgitator,

I posted this further up, but I think it’s worth pasting here too:

I suspect with a coordinated pool of posts or multiple comments on the same post, you could narrow that IP address down to an actual user account.

When a new comment is posted by a user, store, against their username, all IP addresses that visited since the last comment in that thread (by anyone). When a second comment is posted by a user, remove any IP addresses that don’t appear in both lists.

I suspect you would have a very short list after two comments, and a single address after 3. It would also be extremely easy to both lure someone into viewing an image and bait them into multiple replies. Geolocate that IP and you know know vaguely where that user lives.

Time to make sure you’re always on a VPN I guess.

Mikug,
uriel238,
@uriel238@lemmy.blahaj.zone avatar

I got mobile client from Liftoff.

CookieJarObserver,
@CookieJarObserver@sh.itjust.works avatar
_I_,
@_I_@lemmy.world avatar

Yeah, I’m using Mullvad with misc DNS blockers enabled so it has nothing on me ᕕ( ᐛ )ᕗ

TriLinder,
@TriLinder@lemmy.ml avatar

This is possible because Lemmy doesn’t proxy external images but instead loads them directly. While not all that bad, this could be used for Spy pixels by nefarious posters and commenters.

Note, that the only thing that I willingly log is the “hit count” visible in the image, and I have no intention to misuse the data.

targetx,
@targetx@programming.dev avatar

Nice example!

I think proxying everything through lemmy would have a pretty big bandwidth/scalability impact. I expect the lemmy clients dont send any unique user info on these image requests so not sure how useful it would be as a spy pixel? Maybe I’m missing something :-)

goddard_guryon,

It would be interesting to see just how much info is shared when lemmy requests the image. If there is [potentially] sensitive info being shared, the devs might be interested in working on it too (I have no idea how to check such a thing, this comment is just so I can find the post later when more people have shared their wisdom on it)

muddybulldog,

None (by Lemmy), as Lemmy doesn’t actually request the image (that would be proxying). Your browser requests the image directly by URL. Lemmy, technically, doesn’t even know an image exists. It just provides the HTML and lets your browser do the work.

A_A,
@A_A@lemmy.world avatar

Exactly. The text of this post is simply :

![An external image showing your user-agent and the total “hit count”](https://trilinder.pythonanywhere.com/image.jpg)
I get the same result when I browse directly to the link.

So, if OP links a malcious website we have a problem … (?).

goddard_guryon,

Oh dangit, it’s simpler than I thought. So the only data being sent is…just whatever is sent in your average GET request.

newIdentity,

Yes. It’s also a pretty standard way of serving images. A lot of Email clients do that too.

That’s also how these services that show you when a email is read work.

newIdentity,

Not really that huge of a problem. When making requests you also usually send a header which includes the user agent.

The program just logs how many times the image has been requested and it reads the user agent data. No Javascript is actually executed.

Well it might be possible to have a XSS somehow but I haven’t really done much research into this possibility.

In general it’s a pretty standard way of handling embedded images. Email does this too. That’s how you have these services that can check if someone read a mail

CoderKat,

Yup. And to add, your browser will send things like:

  1. Your IP address. Technically this is sent by the OS doing networking and is unavoidable. At best, a VPN can hide this, because the VPN sits in the middle.
  2. Various basic request headers, which most notably contains user agent (identifies browser) and language headers, both which you can fake if you want to.
  3. Cookies for that domain (if you have any). Those can track you across multiple requests and thus build up a profile of you.
odbol,

That’s why you should use a native app, which won’t send any of that identifying info (except for IP but there’s nothing you can do on that)

Seraph,
@Seraph@kbin.social avatar

Any chance that's why this account is posting the same image and gibberish? @googa

Erika2rsis,
@Erika2rsis@lemmy.blahaj.zone avatar

From what I remember, that image was hosted on hexbear.net, so I don’t think so.

ono, (edited )

Notably, this allows remote parties to associate your IP address with your interests, as revealed by the Lemmy communities that you browse.

One way is for the image host to use the HTTP Referer field. (Standards-respecting web browsers pass the URL of the web page being viewed to the server hosting the image.)

Another way is by posting an image with a unique URL.

Even if Referer is withheld and the image is not unique, the image host can still do basic fingerprinting of your client’s request header and your OS’s TCP quirks, and associate that fingerprint with your IP address.

An option for Lemmy to proxy media would be very helpful. Small instances could perhaps disable it, although they might not need to, since the additional load would scale with the number of users on that instance.

PoliticalAgitator,

Notably, this allows remote parties to associate your IP address with your interests, as revealed by the Lemmy communities that you browse.

I suspect with a coordinated pool of posts or multiple comments on the same post, you could narrow that IP address down to an actual user account.

When a new comment is posted by a user, store, against their username, all IP addresses that visited since the last comment in that thread (by anyone). When a second comment is posted by a user, remove any IP addresses that don’t appear in both lists.

I suspect you would have a very short list after two comments, and a single address after 3. It would also be extremely easy to both lure someone into viewing an image and bait them into multiple replies. Geolocate that IP and you know know vaguely where that user lives.

Time to make sure you’re always on a VPN I guess.

ono,

Even without that, once your Lemmy interests are sold/shared by IP address, they can be associated with your real identity as soon as you log in to a service that knows who you are.

TriLinder,
@TriLinder@lemmy.ml avatar

You could also send the image through a DM if you want to find a particular user

PoliticalAgitator,

Oh yeah, that’d be much less effort.

lazylion_ca,

Were you expecting otherwise? Loading an external image is no different than loading an external website with images. Lemmy and reddit are link aggregators, not proxies. Having to proxy everything would run a significant bandwidth for instance admin who are often paying out of pocket for hosting.

roon,
@roon@lemmy.ml avatar

Share source code? I’m curious

TriLinder,
@TriLinder@lemmy.ml avatar

It’s just a simple Flask server. I parse the user-agent using the user_agents Python library, apply some conditionals upon the result, render the image using Pillow and send it to the user.

doom_and_gloom, (edited )

deleted_by_author

  • Loading...
  • CoderKat,

    Proxying external images means that instead of the image being downloaded from the original link, your Lemmy server would download it and serve it for you. The Lemmy server acts as a proxy.

    But it means performing a lot of extra traffic. And realistically you’d want to cache the image because otherwise your server will likely get banned for the high volume of requests you send. But caching the images requires more storage and can have potential for legal issues.

    And images are one thing, but literally any content is the problem. Images are just the most obvious because they often load without even having to click on the image and thus you’ll get far higher volume of user data. Literally anything you link to has this issue and you cannot proxy all of it.

    Anticorp,

    How do you get an image to run code? I guess I somehow missed something important in website development.

    Edit: I saw that you said you’re using Pillow to actually render the image from code. That’s neat! …and scary

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • uselessserver093
  • Food
  • aaaaaaacccccccce
  • [email protected]
  • test
  • CafeMeta
  • testmag
  • MUD
  • RhythmGameZone
  • RSS
  • dabs
  • Socialism
  • KbinCafe
  • TheResearchGuardian
  • Ask_kbincafe
  • oklahoma
  • feritale
  • SuperSentai
  • KamenRider
  • All magazines