A Facebook Sixth Sense
kirszenberg.com
kirszenberg.com
I hack on Slack, which is complex enough that even small UI changes require hideous hacks. And since the javascript and CSS changes out from under you constantly, nothing ever works for long. I'm reverse engineering something to create an opportunity to produce code that runs against an API that will change without notice. But I get big, visible improvements I see every day, and the feeling of changing something that wasn't meant to be changed is just so unreasonably satisfying!
Having a large company store some data you generated in a server farm somewhere while a mindless algorithm does some math with that data to shuffle a few ads around for you to see is utterly banal and not creepy.
... and make it a available for somebody to intentionally look into your life, individually, because of some possibly perverse or unwanted interest in you
It can't hurt to raise some awareness of what you are invisibly broadcasting in terms of data on-line.
(I always liked how this feature could be disabled in Gaim and Pidgin.)
https://chrome.google.com/webstore/detail/facebook-chat-priv...
>Package is invalid. Details: 'Could not load background script 'tracksy/tracksy.js'.'.
Put another way, your statement makes perfect sense if you assume all software is actually a User-Agent in the traditional, ideal sense. But this isn't so, because even programmers don't generally have the spare cycles to rewrite everything they come in contact with, and non-programmers have an even more vanishingly small chance to do anything about it. Agency in the digital world is inevitably shaped by other people's decisions as represented in software, and social agency is shaped by how that software presents itself not just to you but to the people you're communicating with through it. When the state of the software doesn't exactly match the state as visible to the participants, the latter state prevails in a social context, and it's the responsibility of a polite conversation partner to not mess around behind the curtain unless you already know you're welcome.
When typing a `POST https://www.facebook.com/ajax/messaging/typ.php?dpr=1` is sent for example.
I'd like to switch away from the Facebook platform, but it's seriously difficult to convert people away from it.
I'm still on facebook messenger but I mostly off facebook otherwise (and have settings to make it difficult to track pictures of me), and I'm curious to hear a good comparison of messaging software.
Haven't got Facebook myself, but I know Trillian fully supports Facebook chat and I suppose many other (free/open source) IM clients do as well. Such multi-network clients are in my experience great for slowly moving people away from pretty much any network, since they pretty much remove the distinction between them. I just add my friends and let the software figure out how exactly it gets the message to them. :)
In my experience internal layout changes seem to happen way more often than changes to the AJAX handlers.
A bit like this guy's series on game engines: http://fabiensanglard.net/quake3/
Sometimes you can't get inside the application, because the JavaScript is scoped in such a way that nothing leaks out. In those cases you can make an extension that runs before any script on the page, and hijacks native JS such as XMLHttpRequest or WebSocket.
In other words, declare your own WebSocket, and pass everything through to the real one, while intercepting any data you're interested in.
Also for this specific case, you could use Chrome's built-in API for extensions to intercept requests.[1]
As a benefit in some cases these methods can be less prone to breaking changes in the web app, but the opposite can also be true.
This kind of thing makes me think that Facebook et al will eventually push for a way of having closed source client-side scripting.
Still, even a binary can be reverse engineered; you see it all the time.
If you have the binary, you can reverse-engineer it.
When you have a WhatsApp Web tab opened, it keeps a socket connection opened that gives you information such as your phone battery level.
I really want an icon on the Chrome toolbar showing me that charge level.
That was the primary feature :) It worked for the MSN/Microsoft Messenger protocol as well.
You could have it open a window when someone started typing to you, before they sent their message.
For MSN it was also non-officially supported and it grew quite a community of devs who tinkered around things like this, would be interesting to see a renaissance of such projects.
I think the biggest biggest takeaway of this blog post
is how easy it is to hook into the code of a
well-structured modern web application.
So does this mean that spaghettification of your web application code will work as a higher barrier to enter against these kind of clever workarounds?Admittedly, writing spaghetti code will make the programmer feel miserable, but does it really deter people from hacking on your code?
I had had an idea for a nice iOS app, which would in part rely on listing Facebook posts from your friends. I thought this would be easy enough, so I designed it before I prototyped, which is something I never do.
Sure enough, when I had finished the design and finally got to prototyping, I realised that Facebook simply no longer allow access to the read_stream API endpoint, unless you get authorisation from them (seems like no one does). Info here: https://developers.facebook.com/docs/facebook-login/permissi...
Fuelled by ingenuity, and because I had the design ready, I thought I'd try and simply load the user's news feed on a UIWebView, and read the data I need from elements in the DOM. I'm pretty sure this is against FB's ToS and wouldn't fly for long, but I kind of want to give it a go anyway.
I got to a place where I proved it works, but not always reliably and it's certainly hacky.
If you want to give it a go, load up https://m.facebook.com on your favourite browser, and then copy/paste + run the JS code in this jsFiddle (https://jsfiddle.net/Letwernb/), to your console.
It'll list whatever posts it finds on your feed, and give you some info on them. I believe at the moment I'm skipping ads and not so relevant posts, such as "friend shared a link".
I've also got a bit of code that lets me load more posts, until I've reached the 20 I need to display in the app. This is hackier still.
I've got some challenges though. Like I said, it's hacky and relies on FB not changing certain class names, and because the date for each post comes as a string ("2 hours ago"), I need to find a way to convert that back to a timestamp so I can re-order the posts.
Maybe there's an easier way to do what I was trying to, using a similar approach as the one described in this article?
And there’s nothing like that excruciating feeling when you watch it disappear, never to be seen again.
True honesty here, that has never elicited that response in me unless I held a sexual and/or romantic interest in the person on the other end. Other times, it's usually annoyance and or ambivalence.http://stackoverflow.com/questions/21692646/how-does-faceboo...