閱讀429 返回首頁    go 阿裏雲 go 技術社區[雲棲]


用Python開源機器人和5美元,我在Instagram上搞到了2500個真粉兒

0?wx_fmt=jpeg

前不久,我開始同時學習python和Selenium WebDriver(自動化測試工具軟件),想看看我能否在Instagram上獲得一些粉絲,我驚訝的發現我的第一個試運行的腳本程序竟然很有效!

隻是通過對一些圖片增加標簽,我就得到了一些點zan、評論和甚至不少粉絲,而且粉絲的數量上升的非常快。

起初,我是把程序放在我的筆記本電腦上運行的。但是這很麻煩麻煩,因為我需要一直開著電腦。

我是從180個粉絲開始的,當我的粉絲數量達到350個的時候,我修改了我的腳本程序並將它放到了服務器上。然後效果就開始越來越好了。

在我開始講我的InstaPy腳本程序的故事之前,我想說的是這幾點:

  • 免費

  • 開放資源 

  • 易上手

  • 便宜的服務器

如果你想要嚐試,你可以去GitHub上去找你所需要的代碼 。

如果你想學習python,這裏可以找到很棒的書和安裝包來幫助你開始學習!

https://www.humblebundle.com/books/python-book-bundle


第一個月(從357名->757名粉絲)

我從做一些簡單的分析(包括用線性回歸來預估明天的增長情況)來開始尋找最佳的標簽以及參數值。

0?wx_fmt=png

第一個月粉絲的增長情況

使用曆史數據來畫簡單的線性圖,那麼我就能大概預估出9天後有多少個粉絲了。但是在第10天的時候,規律較之前又有比較大的變化。

0?wx_fmt=png

我按照這個方法試了,所以我之後就能去查看之前的數據增長是按照指數增長還是線性增長。

在第一個月的時候,約有13個新粉絲每天都會關注我。有趣的是,我在有幾天的時候甚至失去了一些粉絲。這些粉絲都比較喜歡“身家百萬的導師”和其他有百萬粉絲的博主。

0?wx_fmt=png

第一個月每天新的粉絲數量統計情況

當通過單獨查看腳本的每次“運行”來更加仔細地觀察日常增長,我們可以清楚的看到ins上會有些用機器人程序來運營的博客賬戶。  

0?wx_fmt=png

注意:0個新粉絲不代表沒有增加新的粉絲,取消關注的隻是和新關注的相互抵消了。

讓我們來看看上麵的立柱圖,我們可以看到在一段時間內的8個小時裏,我的賬戶失去了8個粉絲,隻增加了3個新的粉絲(按照每個回合平均來算)我是失去了11個粉絲。


0?wx_fmt=png

左邊:程序運行10分鍾後 /右邊:程序運行25分鍾前

上麵的圖例展示了程序運行10分鍾後和下一次運行程序的25分鍾前的標準增長。標準增長一直是這樣,甚至是在我的賬戶失去粉絲的時候也是這樣 。

這個關注與不關注策略的靈感來源於我的朋友告訴我:我幾乎覺得因為你關注了我所以我欠你些東西。

大部分的粉絲確實是這樣,不像你購買的僵屍粉一樣,隻是沒有動態的空賬戶。

0?wx_fmt=png

在這頁443個粉絲的報告上,像@ luxlifepage這樣的賬戶名就有可能是僵屍粉,因為這用戶名有點像垃圾字符。

正如你在下圖看的那樣,新關注我的粉絲會在我的博客裏比較積極的活動,就不像那些僵屍粉一樣不活躍。

到目前為止,我評論最多的帖子:

0?wx_fmt=png

按2016年ins平台上賬戶每月增長粉絲的比例為16%,而我一月增長粉絲的比率達到了112%(從357名->757名粉絲)。


第二月(從757 ->1472名粉絲)

第二個月就開始變得更好了,我達到了94%的增長比率。我開始尋找合適的標簽來接觸更多的粉絲,最重要的是,如果帖子越多,那麼會有許多人使用這個標簽。

當你準備發帖的時候,就可以看到標簽分類和標簽被使用的數量。

0?wx_fmt=png

帖子的標簽分類和標簽的使用數量

通過這3個標簽,我已經得到了一大群粉絲了。這些已經是我的標簽模板,並且得到大量的應用。

0?wx_fmt=png

大部分經常被使用在帖子裏的標簽

通過對我的帖子經常被點zan、評論和標簽的數量分析,我將分析結果寫成了一個小程序將其簡單處理後保存為JSON。

提示:最好使用正能量的標簽,將會呈現積極的感覺。

0?wx_fmt=png

每個標簽平均被zan的數量

如果我們仔細看一下上圖,就能發現 “美味” 標簽的帖子,我平均得到了390個zan。

我還會發布其他2-3個類別標簽,而不是所有的圖片都發這個標簽。 

我會集中在兩個大的標簽類別和1-2個小的標簽類別,兩個大的標簽類別分別是“素食”和“假期/美好生活”。小的標簽類別是屬於自然風光(是我的家鄉,德國)。

0?wx_fmt=png

標簽集合

真正受到我的程序影響的不僅僅是我的部分粉絲,而且我的真正的活動也會影響新的粉絲。我決定收集每個帖子裏的zan和評論,然後將結果整理之後,得出以下圖表:

0?wx_fmt=png

每篇帖子裏的zan和評論

在上圖中,當我在服務器上開始運行腳本時繪製了一條垂直線,如果你將紅線、紅虛線內和圖表中的數值進行比較,就會發現數值增長了數倍。

0?wx_fmt=png

在第二個月裏每天粉絲的數量

然後我將關注和沒關注的粉絲數量追蹤功能添加到我的InstaPy 腳本程序裏,我對它有如此大的影響感到非常驚訝!

下圖是我醒來之後的7個小時內沒有登錄Instagram的成果:

0?wx_fmt=png

我醒來之後查看的Instagram

0?wx_fmt=png

在第二個月裏每天增長的粉絲數量

從第一個月裏的每天增長13個新粉絲和第二個月裏每天增長23個新粉絲的情況看來,我們可以證實猜想:那就是你擁有的粉絲越多,你就越能快速的吸引更多的粉絲。

讓我印象比較深刻的是,無論我的吸引粉絲策略影響有多強,我在喜歡的博主發表的帖子上收獲新的粉絲數量在23-32個左右,在下一次運行程序的時候他們就會取消關注。

根據我的統計,一個運行腳本程序的INS賬戶已經獲得了5K個粉絲量,每天還會新增70-100個新的粉絲。


第三個月(1472-> 2084名粉絲)

老實說,第三個月相比之前並沒有什麼大的變化,粉絲的增長量甚至比第二個月要低。

我的服務器有出現一些小問題,而且Instagram也改變了網站的布局,導致我的腳本程序無法正常工作,所以我需要解決這個問題,導致我的程序有些天沒有運行了。

我的一個賬戶裏讀到了一條消息如下:

為什麼你關注我了之後又沒關注我了?

這個問題是我之前所沒有考慮到的,明顯的是,我很快就解決了這個問題,因為我覺得這個可能是一個機器賬戶的群發消息。

我的解決方法是保存了一個我已經關注的賬戶為模板,然後我可以定義每個被跟蹤的賬戶的最大關注量。

從我的粉絲量在本月達到了2000個的時候,我舉辦了一個贈禮活動,不僅讓我的粉絲量有些許增加,還讓我的Instagram賬戶看上去更加平常(這個單詞是“合法的”意思,翻成平常感覺不太準確,但我暫時沒有其他更恰當的建議)。

0?wx_fmt=png

免費贈送兩個椰子碗


現在回憶起來,可能最好是將贈品圖片放上去,而不是寫在描述文字裏。

0?wx_fmt=png

在第三個月裏每天增長的粉絲量

從上圖裏我們可以看到每天新增的粉絲量從32個降到20個。一段時間我的腳本出了點問題,我的新增粉絲量就變少了。但是大部分時候還是很不錯的,每天的新增粉絲量可以達到40個。

我們如果將贈品活動前後的新增粉絲量作比較,可以發現每天有28個新增粉絲。  

在發布新的圖片或視頻後,現在我通常會在第一小時內獲得100個zan。

0?wx_fmt=gif

Technical Issues技術問題

使用像Selenium這樣的GUI測試工具的問題是,如果網站(就我而言是Instagram)在HTML布局方麵更改某些內容,我必須改變腳本,並更新從頁麵中選擇的元素。這正是我這個月要學習的東西。

如果您對腳本的工作方式感興趣,請繼續閱讀。要不然你可以直接跳到第四個月。

當然,您可以在GitHub的存儲庫中查看代碼,但閱讀簡短的描述有時更加舒適。所以我們開始吧。

它實際上很簡單,Selenium啟動一個瀏覽器窗口,像一個真實的人一樣。

然後,您可以使用get方法前往任何頁麵。

隻要你在頁麵上,你就可以獲得頁麵的元素,例如通過他們的標簽名稱。所以讓我們來假設在HTML中,關注按鈕看起來是這樣的

我們現在可以使用我們的瀏覽器來獲取按鈕元素,例如類

follow_button = browser.find_elementy_by_class_name('_follow')

這就是改變HTML的問題。如果現在Instagram將類從“_follow”更改為“_follow_button”,腳本需要調整。這隻是一個小小的改變,但是隻需要做一次會更好一些。

一旦我們有了關注按鈕,我們隻需要調用:

follow_button.click()

現在我們已經在Instagram上關注該用戶了。

這種工具的最大任務是通過分析頁麵的HTML(就我而言是instagram.com)來找到元素的正確路徑。

整個腳本分解到最小的部分,隻需在每個頁麵上查找所需的元素,並單擊它們或提取其文本即可。


第四個月(2084-> 2706名粉絲)

在第四個月,令人遺憾的是,這次增長又隻是620個新粉絲。

經過4個月的腳本運行之後,這就是我平均的帖子情況,如下:

0?wx_fmt=png

在這裏,我們再次看到了腳本的影響之大,甚至在腳本開始之前就已經出現在那裏了。

在第四個月開始的時候,我把這個鏈接發布到我的GitHub repoonReddit上,以便把這個詞傳播得更廣一些,也許還會有一些開發人員幫助我測試它並報告bug。

我得到的是這個問題:

0?wx_fmt=png

在陳述了我對這個話題的看法之後,(同一個人給我寫了這封電子郵件:

,我是那個在InstaPy提出上從糟糕的github問題的人。我為Instagram上的影響者創建了一個平台,叫做******。我們是歐洲最大的影響力平台(或者至少是前三名)。我們在業務方麵做得很好,並且我們在冰島有一個很棒的產品團隊。

我對您的InstaPy項目印象深刻。我本身就是Python開發人員,後端是Flask / PostgreSQL / AWS堆棧。我們正在轉向單一回購,以更有彈性,並有能力將其後端分解成更小的服務。

你在短期內找工作嗎?有興趣了解您未來的計劃。

令我印象深刻的是,即使是這樣一個簡陋的自動化腳本,我還是成功地引起了他們的注意。

因為我在編寫這篇文章的時候,還是博世Bosch工程的實習生,無法考慮加入他們的團隊。但是,因為冰島這裏有著美好的大自然和善良的人們,我想有一天在冰島工作。

0?wx_fmt=png

由於我想要讓這個實驗繼續運行一段時間,我想到了一種方法:一次付費,這項服務基本上永遠運行。

RaspberryPi3似乎非常適合它。它體積小巧,功能強大,價格便宜。

僅僅花費35 $,你就可以獲得一個小型的Unix計算機,通過一些修修補補,可以運行Google Chrome。

使用本指南:如何在Raspberry Pi上運行Google Chrome一段時間,我可以在RaspberryPi安裝InstaPy,將其啟動並運行。

這不僅僅是廉價服務的優勢。在檢查機器人時,大多數服務都有一個IP數據中心的列表。DigitalOcean和其他基礎設施作為服務提供商擁有專用的IP,可追溯到每一個數據中心。

像Raspberry Pi這樣的小型計算機在您的家庭網絡中運行,並具有與計算機或智能手機相同的IP地址。

The infamous robots.txt

在整理這篇文章的那一刻,我想過不發布它,因為“自動化”一個站點,而不是它的robot.txt - 這個文檔告訴機器人,網站所有者更希望他們不要掃描網站的那些部分。

例如,Facebook的robot.txt,從以下幾行開始:

# Notice: Crawling Facebook is prohibited unless you have express written permission. See: https://www.facebook.com/apps/site_scraping_tos_terms.php

注意:除非您有明確的書麵許可,否則爬取Facebook是被禁止的。 請參閱:http://www.facebook.com/apps/site_scraping_tos_terms.php

有一大堆這樣的網站:

  • Google穀歌

  • Amazon亞馬遜

  • 甚至是Volksbank的當地分支機構

有趣的是,Instagram一個都沒有。

這可能有助於我的觀察,Instagram上有很多機器人。 Instagram本身並不介意,因為更多的機器人意味著整個係統中的更多活動。

編輯:有人指出,其實Instagram確實有一個robots.txt。你可以在這裏查看。


總結

在寫這篇文章的時候,我有2,800個粉絲。我打算繼續運行我的腳本,直到我在Instagram上被禁止或上升到最高的高度。

不,說真的,我真的有興趣看看這可以走多遠。

當然如果有很大的突破或發現,我會回複你的。

到目前為止,我隻花了5美元租了一台服務器。憑借GitHub的“學生背包”的$ 50優惠券,我可以讓它多運行5個月,而不用多投一分錢。僅僅35美元的RapsberryPi3可能永遠運行著

如果你進入RaspberryPi,還可以獲得一個Model3,並安裝所有必要的工具,讓它在那裏運行一次,費用約為$ 35。這就是我在第四個月所做的。如果您有興趣,請查看如何在RaspberryPi上運行Google Chrome。

另外,在達到2000個粉絲的時候,我花了大約16美元來運送贈品。

所以,沒有額外的東西,它隻是5美元。如果我們包括所有的費用(包括我沒有支付的費用),我會支付100美元來永遠運行它。

注意:如果要使用python開始自動化,請務必查看“自動化這個無聊的東西”!


誰能使用它

每一個人。我是認真的。即使你不想在服務器上安裝與運行,也可以輕鬆下載腳本並手動運行。

有很多專業的服務與我的腳本做的事情完全一樣。唯一的區別是,他們花費了相當多的錢(像FollowLiker的100美元)。我的是免費的。

我還添加了一個快速啟動文件,您隻需輸入一些簡單的信息即可。

InstaPy(username='test', password='test')\
  .login()\
  .set_do_comment(True, percentage=10)\
  .set_comments(['Cool!', 'Awesome!', 'Nice!'])\
  .set_dont_include(['friend1', 'friend2', 'friend3'])\
  .set_dont_like(['food', 'girl', 'hot'])\
  .set_ignore_if_contains(['pizza'])\
  .like_by_tags(['dog', '#cat'], amount=100)\
  .end()

原文發布時間為:2017-5-2

本文來自雲棲社區合作夥伴“大數據文摘”,了解相關信息可以關注“BigDataDigest”微信公眾號

最後更新:2017-05-18 00:01:30

  上一篇:go  Elon Musk 造訪TED大會:超級工廠、特斯拉卡車和隧道交通網絡
  下一篇:go  大規模數據的分布式機器學習平台