Hacker News new | ask | show | jobs
by rtkwe 2332 days ago
There's a less invasive way to do that though by storing the latest location for each device. You don't need to store each and every page turn for the page sync feature.
6 comments

This is apparently how older Kindle models worked, which has made them an attack vector for fraud on Kindle Unlimited:

>KDP [Kindle Direct Publishing, Amazon's self-publishing platform] pays authors for both paid downloads as well as for pages read and it doesn’t sense reading speed, just the highest number of pages reached. ...

>The way that the book-stuffing con works is that scammers stuff lots of extra content into an ebook before uploading it to Kindle Unlimited, and then trick readers into jumping to the end of the book.

>Thanks to a flaw in the Kindle platform, namely that the platform knows your location in a book but not how many pages you have actually read, the scammers can get paid for a user having “read” a book in Kindle Unlimited by getting the user to jump to the last page. ...

>Interestingly, the flip-to-end scam doesn’t quite work on newer Kindles but still works on older, non-updated Kindles which makes it still a lucrative scam.

https://techcrunch.com/2018/06/11/notorious-kindle-unlimited...

Then the next news article will read "Amazon stores the locations of where you are in your ebooks!".

You can't have your cake and eat it too, amazon needs to store something to make this feature work.

“Amazon stores the locations of where you are in your ebooks!” is not newsworthy.
How is "tapped on page 11" different from "is on page 12"?
A lot of Kindle content is reflowable meaning every character is addressible, so they should know which word boundry you clicked on.

Of course this is impossible to do in fixed formats like PDF, but 4 years back I specifically worked in Kindle content to make PDF books reflowable :)

90k rows of "tapped on page X" is definitely different from "is on page 12 in book Y" with exactly one entry per book.
If every tap generates a “[TIMESTAMP] $USER is on page X in book Y” event, then the there is no difference between recording tap events and syncing progress state in terms of what the client is reporting.

The difference lies entirely in what WhisperSync is storing, which you can neither know nor control.

You might be surprised to learn that you can both know and control, using the mitm approach from the below thread about KSP:

https://www.mobileread.com/forums/showthread.php?t=174403

"Is on page 12 in book Y" at what time? If you send an update every time position changes, then there is no difference.
There's a difference between storing every single tap and just storing the latest position for each book and device pair. And the Kindle doesn't update whispersync every page tap anyways it syncs periodically so the Kindle is storing that tap info and sending it all so it's not like this is just a factor of logging the data it gets sent for updating page position. [0]

[0] I think Kindle on Android is the worst for this. Sometimes I don't get the position synced to my Kindle even 30min+ after leaving the Kindle app. Seems like the way to guarantee the server gets updated is to either exit the app or to return to the library.

There's a "sync" button. It's in the top nav on physical Kindles and the hamburger menu everywhere(?) else.
What is stored is the discussion here, not what is sent.
Regardless, I fail to see how storing each update is more invasive than just storing the last update when the same number of requests are sent to Amazon.
The whole history builds up a picture of your habits and reading times where only storing the last gives just that the last time you read the book. Think about the difference between storing the last place you were vs everywhere you've been. Individual data points may be innocuous where a collection of the same data points isn't.
right but that’s how you’re storing it. either way you logged it 90k times, one scenario you’re just creating a new row instead of modifying the existing row
Correct me if I'm wrong, isn't that how whispersync works now?
How is recording a tap invasive?
It's just another accumulation of data unnecessarily just having the last page I read for each device doesn't tell you much but having a history of all of that gives Amazon information about my habits and combined with info about the book maybe mood etc.
so how is that implemented? wouldn’t you just record the current page each time it changes? which is essentially the same as loggingh page turn?
You could just store the last location for each device which is much less useful for datamining. Any time series of events contains much more information about habits than just most recent X.