def exploit_network(t, r, start_node, depth_limit=1, friend_limit=200):
    users = []
    node_info = tu.getUserInfo(t, r, screen_names=[start_node])
    users.append(node_info[0]['id'])

    getFriends = functools.partial(tu._getFriendsOrFollowersUsingFunc,
                                   t.friends.ids, 'friend_ids', t, r)

    friend_ids = getFriends(screen_name=start_node)

    #apply bread-first to get friends' friends
    depth = 1
    next_queue = [u for u in friend_ids]
    users.extend(next_queue)

    while depth < depth_limit:
        #exploit the users only have less than 200 friends
        #
        depth += 1
        (queue, next_queue) = (next_queue, [])
        print "%d level, %d users to be exploited" % (depth, len(queue))
        for _id in queue:
            #get friend ids
            try:
                friend_ids = getFriends(user_id=_id)
                if len(friend_ids) > friend_limit:
                    print "too much friends %d" % len(friend_ids)
                    continue
                next_queue.extend(friend_ids)
            except:
                print >> sys.stderr, "Error encountered for %s" % _id
                break
        users.extend(next_queue)

    return users
def exploit_network(t, r, start_node, depth_limit=1, friend_limit=200):
    users = []
    node_info = tu.getUserInfo(t, r, screen_names=[start_node])
    users.append(node_info[0]["id"])

    getFriends = functools.partial(tu._getFriendsOrFollowersUsingFunc, t.friends.ids, "friend_ids", t, r)

    friend_ids = getFriends(screen_name=start_node)

    # apply bread-first to get friends' friends
    depth = 1
    next_queue = [u for u in friend_ids]
    users.extend(next_queue)

    while depth < depth_limit:
        # exploit the users only have less than 200 friends
        #
        depth += 1
        (queue, next_queue) = (next_queue, [])
        print "%d level, %d users to be exploited" % (depth, len(queue))
        for _id in queue:
            # get friend ids
            try:
                friend_ids = getFriends(user_id=_id)
                if len(friend_ids) > friend_limit:
                    print "too much friends %d" % len(friend_ids)
                    continue
                next_queue.extend(friend_ids)
            except:
                print >> sys.stderr, "Error encountered for %s" % _id
                break
        users.extend(next_queue)

    return users
Exemplo n.º 3
0
def exploit_network(t, r, start_node, depth_limit=1, friend_limit=200):
    users = []
    tu.getUserInfo(t, r, screen_names=[start_node])
    users.append(start_node)

    getFriends = functools.partial(tu._getFriendsOrFollowersUsingFunc,
                                   t.friends.ids, 'friend_ids', t, r)

    friend_ids = getFriends(screen_name=start_node)
    #get the userinformation of friends
    friend_infos = tu.getUserInfo(t, r, user_ids=friend_ids, sample=0.2)

    #apply bread-first to get friends' friends
    depth = 1
    next_queue = [u['screen_name'] for u in friend_infos]
    users.extend(next_queue)

    while depth < depth_limit:
        #exploit the users only have less than 200 friends
        #
        depth += 1
        (queue, next_queue) = (next_queue, [])
        print "%d level, %d users to be exploited" % (depth, len(queue))
        for screen_name in queue:
            #get friend ids
            try:
                friend_ids = getFriends(screen_name=screen_name)
                if len(friend_ids) > friend_limit:
                    continue
                filter_friend_ids, exist_friend_ids = filter_already_download(
                    friend_ids, r)
                #get friend Info
                friend_infos = tu.getUserInfo(t,
                                              r,
                                              user_ids=filter_friend_ids,
                                              sample=0.2)
                exist_friend_infos = loadUserInfo(exist_friend_ids, r)
                friend_infos.extend(exist_friend_infos)
                next_queue.extend([u['screen_name'] for u in friend_infos])
            except:
                print >> sys.stderr, "Error encountered for %s" % screen_name
                continue
        users.extend(next_queue)

    return users
Exemplo n.º 4
0
def exploit_network(t, r, start_node, depth_limit=1, friend_limit=200):
    users = []
    tu.getUserInfo(t, r, screen_names=[start_node])
    users.append(start_node)

    getFriends = functools.partial(
        tu._getFriendsOrFollowersUsingFunc, t.friends.ids,
        'friend_ids', t, r)

    friend_ids = getFriends(screen_name=start_node)
    #get the userinformation of friends
    friend_infos = tu.getUserInfo(t, r, user_ids=friend_ids, sample=0.2)

    #apply bread-first to get friends' friends
    depth = 1
    next_queue = [u['screen_name'] for u in friend_infos]
    users.extend(next_queue)

    while depth < depth_limit:
        #exploit the users only have less than 200 friends
        #
        depth += 1
        (queue, next_queue) = (next_queue, [])
        print "%d level, %d users to be exploited" % (depth, len(queue))
        for screen_name in queue:
            #get friend ids
            try:
                friend_ids = getFriends(screen_name=screen_name)
                if len(friend_ids) > friend_limit:
                    continue
                filter_friend_ids, exist_friend_ids = filter_already_download(friend_ids, r)
                #get friend Info
                friend_infos = tu.getUserInfo(t, r,
                                          user_ids=filter_friend_ids,
                                          sample=0.2)
                exist_friend_infos = loadUserInfo(exist_friend_ids, r)
                friend_infos.extend(exist_friend_infos)
                next_queue.extend([u['screen_name'] for u in friend_infos])
            except:
                print >> sys.stderr, "Error encountered for %s" % screen_name
                continue
        users.extend(next_queue)

    return users
def crawl(
    screen_names,
    friends_limit=10000,
    followers_limit=10000,
    depth=1,
    friends_sample=.2,
    followers_sample=.1,
):

    getUserInfo(t, r, screen_names=screen_names)
    for screen_name in screen_names:
        friend_ids = getFriends(screen_name, limit=friends_limit)
        follower_ids = getFollowers(screen_name, limit=followers_limit)
        friends_info = getUserInfo(t,
                                   r,
                                   user_ids=friend_ids,
                                   sample=friends_sample)
        followers_info = getUserInfo(t,
                                     r,
                                     user_ids=follower_ids,
                                     sample=followers_sample)
        next_queue = [u['screen_name'] for u in friends_info + followers_info]

        d = 1
        while d < depth:
            d += 1
            (queue, next_queue) = (next_queue, [])
            for _screen_name in queue:
                friend_ids = getFriends(_screen_name, limit=friends_limit)
                follower_ids = getFollowers(_screen_name,
                                            limit=followers_limit)
                next_queue.extend(friend_ids + follower_ids)
                getUserInfo(t, r, user_ids=next_queue)
def crawl(screen_names, friends_limit=10000, followers_limit=10000, depth=1, friends_sample=0.2, followers_sample=0.1):

    getUserInfo(t, r, screen_names=screen_names)
    for screen_name in screen_names:
        friend_ids = getFriends(screen_name, limit=friends_limit)
        follower_ids = getFollowers(screen_name, limit=followers_limit)
        friends_info = getUserInfo(t, r, user_ids=friend_ids, sample=friends_sample)
        followers_info = getUserInfo(t, r, user_ids=follower_ids, sample=followers_sample)
        next_queue = [u["screen_name"] for u in friends_info + followers_info]

        d = 1
        while d < depth:
            d += 1
            (queue, next_queue) = (next_queue, [])
            for _screen_name in queue:
                friend_ids = getFriends(_screen_name, limit=friends_limit)
                follower_ids = getFollowers(_screen_name, limit=followers_limit)
                next_queue.extend(friend_ids + follower_ids)
                getUserInfo(t, r, user_ids=next_queue)