2010-11-28 17 views
7

मुझे फेसबुक पर अपने प्रत्येक मित्र के दोस्तों की संख्या प्राप्त करने में दिलचस्पी है। स्पष्ट रूप से आधिकारिक फेसबुक एपीआई दोस्तों के दोस्तों को पाने की इजाजत नहीं देता है, इसलिए मुझे किसी भी तरह से कुछ (समझदार समझदार) सीमा प्राप्त करने की आवश्यकता है। मैंने निम्नलिखित कोशिश की:पायथन में स्क्रैप फेसबुक

import sys 
import urllib, urllib2, cookielib 

username = '[email protected]' 
password = 'mypassword' 

cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
login_data = urllib.urlencode({'email' : username, 'pass' : password}) 
request = urllib2.Request('https://login.facebook.com/login.php') 
request.add_header('User-Agent','Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.12) Gecko/20101027 Fedora/3.6.12-1.fc14 Firefox/3.6.12') 
opener.open(request, login_data) 
resp = opener.open('http://facebook.com') 
print resp.read() 

लेकिन मैं केवल एक कैप्चा पेज के साथ समाप्त होता हूं। कोई विचार यह है कि एफबी कैसे पता लगा रहा है कि अनुरोध "सामान्य" ब्राउज़र से नहीं है? मैं एक अतिरिक्त कदम जोड़ सकता हूं और कैप्चा को हल कर सकता हूं लेकिन इससे प्रोग्राम में अनावश्यक जटिलता बढ़ जाएगी, इसलिए मैं इसे टालना चाहूंगा। जब मैं एक ही उपयोगकर्ता-एजेंट स्ट्रिंग के साथ एक वेब ब्राउज़र का उपयोग करता हूं तो मुझे कैप्चा नहीं मिलता है।

वैकल्पिक रूप से, क्या किसी के पास मेरे लक्ष्य को पूरा करने के तरीके पर कोई सैनर विचार है, यानी दोस्तों के दोस्तों की एक सूची प्राप्त करें?

+0

दिलचस्प खोज। मैंने सोचा कि वे डिफ़ॉल्ट रूप से कैप्चा प्रदर्शित कर रहे हैं और फिर इसे जेएस के साथ छिपा सकते हैं, लेकिन जब मैं एफएफ में जेएस को अक्षम करने का प्रयास करता हूं, तो ऐसा लगता है कि ऐसा नहीं लगता है। हालांकि, मेरे दोस्त के दोस्तों को देखने के लिए ऐसा लगता है कि AJAX की आवश्यकता है, जो भी निषिद्ध होगा। – mpen

उत्तर

3

क्या आपने फिडलर 2 या वायर्सहार्क के साथ HTTP लेनदेन का पता लगाने और तुलना करने का प्रयास किया है? फिडलर भी https का पता लगा सकता है, जब तक कि आपके क्लाइंट कोड को फर्जी कर्ट के साथ काम करने के लिए बनाया जा सके।

selenium, फ़ायरफ़ॉक्स प्लगइन, सर्वर और अजगर क्लाइंट लाइब्रेरी स्थापित करने के लिए:

0

मैं फेसबुक और एक ही तरीका है कि मेरे लिए काम किया है स्क्रैप करने के कई तरीके की कोशिश की थी। फिर फ़ायरफ़ॉक्स प्लगइन के साथ, आप पाइथन स्क्रिप्ट के रूप में लॉगिन और निर्यात करने के लिए किए गए कार्यों को रिकॉर्ड कर सकते हैं, आप इसे अपने काम के आधार के रूप में उपयोग करते हैं और यह काम करेगा। असल में मैंने इस स्क्रिप्ट में एफबी पर निरीक्षण करने के लिए चीजों की एक सूची को फेंकने के लिए अनुरोध किया और फिर स्क्रिप्ट के अंत में मैं परिणामों को अपने सर्वर पर वापस भेजता हूं।

मुझे ब्राउज़र सर्वर सिम्युलेटर जैसे मैकेनाइजेशन या अन्यथा के साथ सीधे अपने सर्वर से ऐसा करने का कोई तरीका नहीं मिला! मुझे लगता है कि इसे क्लाइंट ब्राउज़र से किया जाना चाहिए।

संबंधित मुद्दे