Monday, August 29, 2016

Auto Facebook | Thuật toán kết bạn bằng C#

Trước khi vào nội dung mình đã đề cập như tiêu đề thì mình có nói sơ qua về các khóa học mình mở, hiện mình đang mở 1 lớp lập trình online học qua skype và fanpage chính chủ của mình là https://www.facebook.com/laptrinh24h/ các bạn có thể đăng ký học bằng cách để lại info cho mình dưới bài viết hoặc là inbox vào fanpage trên để nhận được hỗ trợ sớm nhất. Ok bắt tay vào tut nào:

Phân tích quá trình thuật toán

Kết bạn trên facebook cũng như kết bạn ngoài đời , thích ai thì kết bạn đấy nhưng mục đích để làm chương trình auto chắc hẳn không phải thích không thôi, có thể các bạn dùng để tăng tương tác hoặc marketting sản phẩm nào đấy của mình chả hạn. 

- Cái bạn muốn làm ở đây là thay thế cái hành động ấn vào nút kết bạn kia. Ok vậy mình sẽ vạch cái sơ đồ chiến lược như sau:

1. Tìm người bạn bằng tên bất kỳ:
- Ví dụ mình tìm người tên Cường Nguyễn ta có tham số url như sau
Tiếp đó ta được danh sách các người mà mình muốn kết bạn - việc quan trọng ở đây là làm sao để lấy được ID của người muốn kết bạn. Ok mình cho các bạn sẵn luật như ở dưới đây mình đã phân tích kỹ trong video https://www.facebook.com/codervizut/videos/911905722248404/
và ta được cái luật như sau: @"data-profileid=""(\d+?)"""

- Sau đấy tất nhiên để lưu trữ các ID vào trong 1 cái mảng hoặc danh sách nào đấy để mình còn lấy ra để sử dụng đúng không. Vậy để lấy nhiều giá trị cùng nhau ta lấy như sau.

 MatchCollection mcFriendsID = Regex.Matches(htmlFriends, @"data-profileid=""(\d+?)""",RegexOptions.IgnoreCase);
                if (mcFriendsID.Count > 0)
                {
                    foreach (Match mID in mcFriendsID)
                    {
                        idFriends.Add(mID.Groups[1].Value.Trim()); // idFriends là 1 danh sách mình đã tạo trước đó.
                    }
                }

Tiếp đó ta phân tích khi ta ấn kết bạn tới ID đó thì ta nhận được những gì nhé:

Về phần header ta có ( Chúng ta không cần quan tâm nhiều tới phần này vì webbrowser đã hỗ trợ sẵn rồi ):


Tiếp đó là phần nội dung phần này thì là phần quan trọng:


Cái cần thay đổi giá trị ở đây là ID Friends thế nên ta cho 1 vòng foreach để duyệt cái idFriends rồi thay thế lần lượt cái tham số vào đó thế là ta đã kết bạn thành công.
Sau đây là phần code post tham số lên server:

 #region post dữ liệu để kết bạn
                foreach (string id in idFriends)
                {
                    string postData2 = "to_friend="+ id + "&action=add_friend&how_found=profile_button&ref_param=ts&link_data[gt][profile_owner]="+ id + "&link_data[gt][ref]=timeline%3Atimeline&outgoing_id=&logging_location=&no_flyout_on_click=true&ego_log_data&http_referer=https%3A%2F%2Fwww.facebook.com%2Fsearch%2Fpeople%2F%3Fq%3DC%25C6%25B0%25E1%25BB%259Dng&floc=profile_button&frefs[0]=ts&__user="+ USER_ID + "&__a=1&fb_dtsg=" + fb_dtsg;
                    System.Text.Encoding encoding2 = System.Text.Encoding.UTF8;
                    byte[] bytes2 = encoding.GetBytes(postData2);
                    string url2 = "https://www.facebook.com/ajax/add_friend/action.php?dpr=1";
                    webBrowser1.Navigate(url2, string.Empty, bytes2, "Content-Type: application/x-www-form-urlencoded");
                    while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
                        Application.DoEvents();
                    richTextBox1.Text += webBrowser1.DocumentText;
                }
                #endregion kết thúc kết bạn

- Sau khi gửi post lên ta thấy 1 chuỗi dài loằng ngoằng nghĩa là đã kết bạn thành công.

Quay lại tab fb kiểm tra lại xem đã thành công hay chưa:




Auto Facebook

--------------------------------------------------------------------------------------------------------------------------
Bài viết sắp tới mình sẽ viết về nội dung làm như nào post ảnh lên facebook :) Like và share để mình có động lực làm những bộ tut sắp tới.

Bài Viết Liên Quan