source: misc/clean_fb.py

Last change on this file was 3, checked in by mancausoft, 12 years ago

Block all app in facebook

File size: 4.8 KB
Line 
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3#
4#  Block all facebook app!!!! \o/
5#
6#  Copyright (C) 2012 Andrea Milazzo aka mancausoft <me@mancausoft.org>
7#
8#  This Program is free software. It comes without any warranty, to
9#  the extent permitted by applicable law. You can redistribute it
10#  and/or modify it under the terms of the Do What The Fuck You Want
11#  To Public License, Version 2, as published by Sam Hocevar. See
12#  http://sam.zoy.org/wtfpl/COPYING for more details.
13
14import cookielib
15import os
16import urllib
17import urllib2
18from threading import Thread
19
20import re
21
22from BeautifulSoup import BeautifulSoup
23from BeautifulSoup import Comment
24
25fb_username = username
26fb_password = password
27
28app_urls = ["https://www.facebook.com/appcenter/category/actiongames",
29            "https://www.facebook.com/appcenter/category/entertainment/",
30            "https://www.facebook.com/appcenter/category/adventuregames",
31            "https://www.facebook.com/appcenter/category/boardgames",
32            "https://www.facebook.com/appcenter/category/familygames",
33            "https://www.facebook.com/appcenter/category/photovideo",
34            "https://www.facebook.com/appcenter/category/sports",
35            "https://www.facebook.com/appcenter/category/travel",
36            "https://www.facebook.com/appcenter/category/utilities/",
37            ]
38
39cookie_filename = "facebook.cookies"
40
41class CleanFB(object):
42
43    def __init__(self, login, password):
44        """ Start up... """
45        self.login = login
46        self.password = password
47
48        self.cj = cookielib.MozillaCookieJar(cookie_filename)
49        if os.access(cookie_filename, os.F_OK):
50            self.cj.load()
51        self.opener = urllib2.build_opener(
52            urllib2.HTTPRedirectHandler(),
53            urllib2.HTTPHandler(debuglevel=0),
54            urllib2.HTTPSHandler(debuglevel=0),
55            urllib2.HTTPCookieProcessor(self.cj)
56        )
57        self.opener.addheaders = [
58            ('User-agent', 'Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11'),
59        ]
60
61        # need this twice - once to set cookies, once to log in...
62        self.login_to_facebook()
63        self.login_to_facebook()
64
65
66    def login_to_facebook(self):
67        """
68        Handle login. This should populate our cookie jar.
69        """
70        login_data = urllib.urlencode({
71            'email' : self.login,
72            'pass' : self.password,
73        })
74        response = self.opener.open("https://www.facebook.com/login.php", login_data)
75        return ''.join(response.readlines())
76
77    def get_app(self, app_url):
78        ret = list()
79        ret2 = list()
80        #response = self.opener.open("https://www.facebook.com/appcenter/")
81        response = self.opener.open(app_url)
82
83        #return ''.join(response.readlines())
84        content = response.read()
85
86        soup = BeautifulSoup(content)
87        comments = ''.join(soup.findAll(text=lambda text:isinstance(text, Comment)))
88        soup = BeautifulSoup(comments)
89        parse = soup.findAll('li' )
90        for li in parse:
91            try:
92                data =  li['data-gt']
93                ret.append(re.search('''"appid":"([0-9]*)"''', data).group(1))
94            except:
95                pass
96
97
98
99        parse = soup.findAll('span',  {'class':"fwb"} )
100        #print parse
101        for fwb in parse:
102            a = fwb.findAll('a')
103            if a:
104                a = a[0]
105                ret2.append(a['href'])
106
107        return (ret, ret2)
108
109
110
111    def delete_app(self, app, url):
112        response = self.opener.open(url)
113        content = response.read()
114        response = self.opener.open("https://www.facebook.com/ajax/apps/block_app.php?app_id=" + app +"&type_index=0&source=about&confirm_id=block_app_link&causal_element=js_0&__asyncDialog=1&__user=100002698406562&__a=1")
115
116        content = response.read()
117
118        remove_data = urllib.urlencode({
119            'confirm':'1',
120            'ok':'OK',
121            '__d':'1',
122            '__user':'100002698406562',
123            '__a':'1',
124            'fb_dtsg':'AQCj0o3s',
125            'phstamp': '1658167106481115111567'
126        })
127        print remove_data
128        response = self.opener.open("https://www.facebook.com/ajax/apps/block_app.php?app_id="+app+"&type_index=0&action=block&source=about&confirm_id=block_app_link",remove_data)
129        content = response.read()
130        print content
131
132        print ""
133        print "==================================="
134        print ""
135
136
137def clean(url):
138    apps, urls = test.get_app(url)
139    for i in xrange(len(apps)):
140        test.delete_app(apps[i], urls[i])
141
142
143test = CleanFB(fb_username, fb_password)
144
145for i in xrange(15):
146    threads = list()
147    for url in app_urls:
148        th = Thread(target=clean, args=(url,))
149        th.start()
150        threads.append(th)
151
152
153    for th in threads:
154        th.join()
155
156test.cj.save()
Note: See TracBrowser for help on using the repository browser.