vk_liberator
Regain liberty in the cruel social media world.
This program assists you with purging your metadata from Russian social network VKontakte, owned by Mail.ru.
Motivation
I′ve heard a lot of news about random people getting into jail because, apparently, Russian department of defense called “ФСБ” (Federal Security Service) didn't like a meme with Jesus Christ on it posted by the person 10 years ago or an ironic wall post that mentioned Russian government in a not-so-positive way.
Of course, I wouldn′t want to meet the same fate. Not only that, but I′m also sure a lot of people are not the same people they were 10 years ago. Just remember those old stupid memes, the manner of speech most of Internet users had, the wildness of everyday life in the web. Internet of the past was a place for enthusiaists not having evil objectives, unlike today's megacorps wanting more money. The culture has already changed, and it's not getting better. Nowadays it′s no longer considered normal to post your honest opinion, to have fun, to be whoever you really are. HR at big companies are already taking interviewee′s Internet social past into account when considering hiring them! Your data is not longer yours anymore. Now you are the product. So why should I let it be like this?
That′s why I built this program. It makes the process of deleting your metadata from VKontakte easy and painless.
Usage
To use this program, you need to get an archive of your data from VK. You can start the export process on this page. Make sure you check Comments when choosing what data to export, or you won′t be able to delete them!. The process usually takes from 2 to 3 days, and the resulting archive only contains metadata, not the actual content, weighing 150 MB at max zipped.
As of now, the program supports the deletion of your likes (essentially, un-liking all posts you′ve ever pressed that heart icon on) and the deletion of your wall comments. Adding support for more object types is pretty trivial, so if you feel the need for more, you′re always welcome to submit a pull request!
Once you get the archive, follow the guide:
- Download Python interpreter from the official website, if not already. There are builds available for all major platforms. If you′re using Linux or macOS, chances are you already have it.
- Download the program. Grab the latest archive and unpack it somewhere you have enough place to store the archive.
- Create a folder in the same directory you′ve unpacked the program and call it, let′s say, "vk". Unpack the archive to the "vk" folder we′ve mentioned before. Make sure all files and directories (such as
comments
,likes
,profile
) are all in the aforementioned folder. - Start up a command prompt in the program directory:
- On Windows: open the folder → Shift+RMB → Open command window here;
- On macOS: open Terminal.app →
cd
(trailing space intended) → drag the folder into the terminal window → press Enter
- Install the dependencies:
pip3 install -r requirements.txt
- Run the program:
python3 main.py YOUR_FOLDER_HERE --crawl-all
, replacingYOUR_PROGRAM_HERE
with the folder name you′ve unpacked the export to (in my case, it would′ve beenvk
). - Now you need to get the access token. Go to this page. The access token never leaves your device and is only known to you and VKontakte. You can verify the authenticity by clicking on app′s name on the page. You should be redirected to the official VK API community.
- Click Allow (Разрешить), then copy a part of the URL between
access_token=
and&expires_in
. - Paste it into the terminal and press Enter. Review the statistics and confirm. The export process should begin shortly afterwards.
By default the program finds all items it can understand and runs the deletion process, prompting for a captcha in the terminal window. If you want to customize the behavior, read further.
Choosing what to delete
vk_liberator has a set of command-line switches for choosing the types of objects to delete:
--crawl-likes
enables deleting of likes,--crawl-comments
enables deleting of comments.
There is another switch called --crawl-all
, which enables all types mentioned before and makes the aforementioned flags toggle the corresponding types off, not on to allow exclusion.
There are many other command-line switches available. You can run the program with --help
to learn more.
Unliking comments
The export archive from VKontakte contains pretty much all info about your liked posts, photos and videos. However, it doesn′t have anything about your liked comments, so you need to do some semi-manual work to retrieve a list of them.
The process roughly expands as follows:
-
first, you delete your likes the usual way;
-
after all likes were deleted, you go to vk.com → “Liked” newsfeed section;
-
scroll all the way down (you can use PgDown or End keys);
-
run this script:
console.log(Array.from(document.querySelectorAll('.post_link:first-child')).map(el => el.href).join('\n'))
-
create
YOUR_EXPORT_DIR/likes/comments/
folder and copy the output tocomments.html
; -
move everything else out of
YOUR_EXPORT_DIR/likes/
because it was already deleted; -
delete your resume file (
resume.bin
); -
and run the program again with the same arguments.
I might optimize this in the future to make it more user-friendly, because it′s a pain and requires knowing some internals, but right now it′s done like that.
Telegram integration
Sitting on your computer and solving the captchas all day can be pretty tedious, but you can make this process a little bit easier with Telegram integration. I′ve used this to solve captchas from my smartphone, and it was definitely easier than doing it on PC.
To enable it, you need to: 0. Register in Telegram, if you haven't already.
- Create a bot in BotFather. Type
/newbot
, then follow the instructions. - Start the dialog with your bot. Open a link to your bot′s profile in BotFather′s message and press Start. This is required in order to receive messages!
- Don′t delete the message from BotFather with the bot token — we′ll need it later. Now, let′s get your profile ID. You can easily do this by messaging IDBot on Telegram, sending a
/getid
command and copying the ID you got back. - Run the program again, but this time add
--telegram-chat <your ID goes here>
switch. Like this:python3 main.py YOUR_FOLDER_HERE --crawl-all --telegram-chat YOUR_ID
. - When the program asks you for a bot token, copy and paste it from your dialog with BotFather.
Voilà! Now you should be getting asked by the bot for captcha.
Anti-captcha.com integration
But this doesn′t really solve the actual problem — the captcha. VKontakte′s limits are pretty strict. You can get a captcha or two when deleting your comments, but rate limits for deleting likes are much stricter — you′re guaranteed to run into a captcha approximately every 50 requests, no matter the delay between requests.
That′s why you can pay with your money instead of your precious time. The program supports integration with Anti-captcha.com (ex-Antigate) to ease your torment. The prices are pretty cheap — I′ve paid $1 for 25K of my VK requests (divide that by 40 to get an approximate count of captcha requests).
- Register on anti-captcha.com, follow the instructions, get your API key.
- Run the program with
--anticaptcha
switch. - Paste your API key when asked. Done!
Something doesn′t work?
If you have a question, you can open a new thread on Discussions tab. I′ll try to answer shortly.
If you′ve found a bug or you want to suggest a feature, check for duplicates in Issues tab and, if there′s none, create a new issue! Perhaps someone has run into the same problem as you before.
Planned features
- Easy installation
- Custom progress bar
- More object types (wall posts, photos...)
- Archiving
Contributions
I′m open to pull requests! Take a look at the list of planned features above.