วิธีสร้างบอท Twitter, Instagram และ Reddit โดยใช้ Python

วิธีสร้างบอท Twitter, Instagram และ Reddit โดยใช้ Python

มันคือปี 2019 คุณเคยได้ยินเกี่ยวกับบอท มีบอทแชท บอทอีเมล บอทสแครปเว็บ และบอทโซเชียลมีเดีย คุณได้สร้างบอทแล้วหรือยัง? มันง่ายอย่างน่าประหลาดใจ อาจเป็นเพราะเหตุใดพวกเขาอยู่ทั่วทุกแห่ง โอบกอดผู้มีอำนาจเหนือกว่าบอทของเราด้วยการเข้าร่วมอันดับของพวกเขา





ในบทความนี้ ฉันจะแสดงให้คุณเห็นว่าคุณสามารถใช้ Python เพื่อโต้ตอบกับบัญชี Twitter, Reddit และ Instagram ของคุณโดยอัตโนมัติได้อย่างไร





การทำงานกับ Python

บทสรุปนี้ใช้ Python เป็นภาษาที่เลือก ข้อดีที่ใช้งานง่ายของ Python นั้นมีมากกว่าความบกพร่องด้านความเร็วใดๆ เมื่อเทียบกับภาษาอื่นๆ คุณสามารถดาวน์โหลด Python ได้เกือบทุก OS ใช้ บรรณาธิการที่คุณเลือก .





การแจกแจง Python นั้นเชื่อมโยงกับยูทิลิตี้ที่เรียกว่า

วิธีรีเซ็ตรหัสผ่าน windows xp
pip

. ในขณะที่เขียน มีห้องสมุดให้ดาวน์โหลดมากกว่า 168,000 แห่งโดยใช้



pip

. สำหรับบอทที่คุณจะสร้างวันนี้ คุณต้องการเพียงสามตัวเท่านั้น

จากบรรทัดคำสั่ง คุณสามารถติดตั้งไลบรารีที่จำเป็นโดยใช้สามบรรทัดนี้





pip install --upgrade InstagramAPI
pip install --upgrade tweepy pip install --upgrade praw

ตอนนี้ คุณจะสามารถนำเข้าไลบรารีเหล่านี้ได้ตามต้องการ

การรับรหัสและความลับของแอปพลิเคชัน

นักปรัชญาผู้เฉลียวฉลาดเคยกล่าวไว้ว่า 'ความลับ ความลับไม่สนุก' ความลับ ความลับทำร้ายใครบางคน' ด้วยความเคารพ บอทต้องการความลับ ขั้นตอนต่อไปในการตั้งค่าบอทของคุณคือการอนุญาตให้เข้าถึง API ของแต่ละไซต์ ในการดำเนินการนี้ คุณจะต้องมีรหัสแอปพลิเคชันหรือรหัสลับ





เมื่อคุณรวบรวมกุญแจ ความลับ โทเค็น และอื่นๆ (ฟังดูเหมือนเกมสนุก!) ให้รวมทั้งหมดไว้ในไฟล์เดียวที่เรียกว่า 'credentials.py' ไฟล์นี้จะมีลักษณะดังนี้:

# keys
twitter_consumer_key = ''
twitter_consumer_secret = ''
twitter_access_token = ''
twitter_access_token_secret = ''
reddit_client_id = ''
reddit_client_secret = ''
reddit_user_agent = ''
instagram_client_id = ''
instagram_client_secret = ''

คำแนะนำด้านความเป็นส่วนตัวที่สำคัญมาก: อย่าส่งไฟล์นี้การควบคุมแหล่งที่มาใดๆ (เช่น Git) คุณไม่ต้องการให้ใครมีกุญแจและความลับเหล่านี้ พวกเขาถูกเรียกว่าเป็นความลับด้วยเหตุผล

การตั้งค่าการเข้าถึง Twitter

ดูคำแนะนำในการตั้งค่าบอท Twitter ด้วย Node.js ซึ่งจะแสดงวิธีสร้างแอป Twitter ของคุณ โปรดทราบว่า Twitter จะใช้เวลาสักครู่ในการยืนยันบัญชีของคุณ และตรวจสอบว่าคุณไม่ได้สร้างบัญชีสแปม

หลังจากทำตามขั้นตอนเหล่านี้แล้ว ให้คัดลอกรหัสผู้ใช้ รหัสลับของผู้บริโภค โทเค็นการเข้าถึง และรหัสลับของโทเค็นการเข้าถึงลงในไฟล์ credentials.py ของคุณ

การตั้งค่า Reddit Access

การรับรหัสลูกค้า Reddit และความลับนั้นคล้ายกับ Twitter มาก คุณจะต้องลงทะเบียนแอพเป็น Reddit User Agent หลังจากทำเช่นนี้ คุณควรใส่ 'Reddit User Agent' ลงในประวัติย่อของคุณโดยเด็ดขาด

เข้าสู่ระบบ ไปยังบัญชี Reddit ที่คุณเลือก นำทางไปยัง หน้าการตั้งค่าแอพ และ คลิกสร้างแอปอื่น . ตั้งชื่อตัวแทนผู้ใช้ของคุณให้เป็นประโยชน์ เลือกสคริปต์ เพื่อวัตถุประสงค์ของแอปของคุณ เกี่ยวกับ URL สามารถเว้นว่างไว้ได้ กรอกที่อยู่สำหรับกล่องเปลี่ยนเส้นทาง

หลังจากที่คุณ กดสร้างแอพ หน้าจอต่อไปนี้จะแสดงรายการแอปของคุณ ตัวเลขใต้ชื่อแอปพลิเคชันของคุณแสดงถึงรหัสลูกค้าและรหัสลับของไคลเอ็นต์อยู่ด้านล่าง คัดลอกค่าเหล่านี้ไปยังไฟล์ credentials.py ของคุณ

กำลังตั้งค่าการเข้าถึง Instagram

การเข้าถึง Instagram นั้นแตกต่างจาก Twitter และ Reddit แทนที่จะลงทะเบียนแอป คุณต้องใช้ชื่อผู้ใช้และรหัสผ่านของคุณ ฉันแนะนำให้สร้างบัญชีสาธารณะแยกต่างหากและใช้รายละเอียดเหล่านั้นสำหรับบอทของคุณ

การเข้าถึง Reddit ด้วย Praw

การใช้กุ้งเป็นกระบวนการสองขั้นตอน ขั้นแรก การตั้งค่าการเข้าถึงเป็นการเรียกใช้ฟังก์ชันเดียวไปยังวิธี praw ของ Reddit จากนั้น ใช้อ็อบเจ็กต์เริ่มต้น การค้นหา subreddit ทำได้โดยใช้เมธอด new()

import praw
from credentials import *
my_reddit = praw.Reddit(client_id=reddit_client_id, client_secret=reddit_client_secret, user_agent=reddit_user_agent)
sub_name = 'technology'
max_posts = 10
for submission in my_reddit.subreddit(sub_name).new(limit=max_posts):
print(submission.title)

เปลี่ยน

sub_name

ตัวแปรเพื่อรับโพสต์จาก subreddits ต่างๆ แทน

new()

, วิธีอื่นๆ เช่น

hot()

สามารถรับโพสต์ได้

กำลังค้นหา Instagram Hashtags ผ่าน InstagramAPI

ขั้นตอนแรกในการใช้ Instagram API คือการตั้งค่าวัตถุด้วยรหัสลูกค้าและข้อมูลลับ หลังจากนั้นให้เรียกวิธีการเข้าสู่ระบบ () เพื่อตั้งค่าให้เสร็จสิ้น

from InstagramAPI import InstagramAPI
from credentials import instagram_client_id, instagram_client_secret
my_insta_api = InstagramAPI(instagram_client_id,instagram_client_secret)
my_insta_api.login()

การใช้ API นั้นซับซ้อนกว่า Reddit เล็กน้อย ในตัวอย่างนี้ สคริปต์ใช้ getHashtagFeed เพื่อรับวัตถุตอบกลับ JSON ที่มีขนาดใหญ่มากจาก Instagram

เมื่อค้นหาผ่านการตอบกลับ สคริปต์จะค้นหาข้อความคำอธิบายภาพแล้วพิมพ์ไปที่หน้าจอเพื่อดู

get_hashtag = my_insta_api.getHashtagFeed(hashtag)
if get_hashtag != False:
for item in my_insta_api.LastJson['items']:
if 'caption' in item.keys() and 'text' in item['caption'].keys():
caption = item['caption']['text']
print(caption)

เพิ่มรูปภาพไปยังโซเชียลมีเดีย

ต่อจากนี้ไป คุณอาจต้องการให้สคริปต์ของคุณได้รับรูปภาพในฟีดแฮชแท็กนี้ ในการดำเนินการนี้ ให้วนซ้ำการตอบสนอง JSON และค้นหาสื่อที่เกี่ยวข้องกับแต่ละโพสต์ นี่คือการใช้งานสำหรับการดึงข้อมูลจากการตอบสนอง JSON:

def get_images_from_hashtag(hashtag, num_images):
images = []
get_hashtag = my_insta_api.getHashtagFeed(hashtag)
if get_hashtag == False:
return images
for item in my_insta_api.LastJson['items']:
if item['media_type'] == 1 and 'image_versions2' in item.keys():
candidate = get_largest_image(item['image_versions2']['candidates'])
# get image
filename = self.save_image_from_candidate(candidate['url'])
if filename != '':
# get status, save as tuple
caption = get_caption(item)
images.append((filename, caption))
if len(images) >= num_images:
break
return images

มีฟังก์ชันตัวช่วยสองฟังก์ชันที่ใช้ในฟังก์ชันนี้ Instagram ส่งรายชื่อรูปภาพ 'ผู้สมัคร' ในการตอบกลับ JSON เลือกรูปภาพที่ใหญ่ที่สุดเพื่อให้สื่อแสดงด้วยความละเอียดสูงสุด

def get_largest_image(candidates):
candidate = {}
pixels = 0
for cand in candidates:
# pick the highest resolution one
res = cand['height']*cand['width']
if res > pixels:
pixels = res
candidate = cand
return candidate

ประการที่สอง เมื่อพบลิงก์ไปยังรูปภาพ คุณสามารถบันทึกรูปภาพในเครื่องโดยการเขียนเนื้อหาลงในไฟล์ ใช้

requests

ห้องสมุดทำให้สิ่งนี้ตรงไปตรงมา

def save_image_from_candidate(url):
filename = ''
response = requests.get(url)
# check the response status code, 200 means good
if response.status_code == 200:
filename = url.split('/')[-1].split('?')[0]
with open(filename, 'wb') as f:
f.write(response.content)
return filename

ทวีตสื่อด้วย Tweepy

ขั้นแรก คุณจะต้องตั้งค่าการเข้าถึง Twitter โดยใช้ความลับและกุญแจของคุณ

import tweepy
from credentials import *
tw_auth = tweepy.OAuthHandler(twitter_consumer_key, twitter_consumer_secret)
tw_auth.set_access_token(twitter_access_token, twitter_access_token_secret)
tw_api = tweepy.API(tw_auth)

การสร้างบอทรีทวีตทั่วไปทำได้เพียงไม่กี่บรรทัด

for tweet in tweepy.Cursor(tw_api.search,q='MakeUseOf').items(10):
try:
tweet.favorite()
tweet.retweet()
time.sleep(2)
except tweepy.TweepError as e:
print(e.reason)
except StopIteration:
break

สิ่งอื่น ๆ อีกมากมายสามารถทำได้ด้วยห้องสมุดนี้ ในการสรุปบทสรุปนี้ คุณสามารถใช้

get_images_from_hashtag

ฟังก์ชั่นจากบอท Instagram ที่ทำไว้ก่อนหน้านี้เพื่อทวีตรูปภาพและคำอธิบายภาพ

นอกจากนี้ บอท Twitter ของคุณสามารถค้นหา Reddit สำหรับโพสต์ใหม่และทวีตข้อความเหล่านั้นได้เช่นกัน ในการรวมฟังก์ชันทั้งสองนี้เข้าด้วยกันจะมีลักษณะดังนี้:

# use r/ for reddit search
# and # for instagram search
hashtag = 'technology'
num_posts = 5
# tweet reddit info
reddit_posts = my_reddit.subreddit(hashtag).new(limit=num_posts)
for submission in reddit_posts:
title = submission.title
url = 'www.reddit.com{}'.format(submission.permalink)
tweet_str = f'Reddit r/{sub} update:
{title} #{sub} {url}'
tweet_str = trim_to_280(tweet_str)
tw_api.update(tweet_str)
# tweet instagram media
media_info = get_images_from_hashtag(hashtag, num_posts)
for (filename, message) in media_info:
try:
tweet_str = trim_to_280(message)
tw_api.update_with_media(filename, status=tweet_str)
except tweepy.TweepError as e:
print(e.reason)
except StopIteration:
break

บอทโซเชียลมีเดียที่ขับเคลื่อนด้วย Python ของคุณพร้อมแล้ว!

ตอนนี้คุณมีโค้ดจำนวนมากที่ดึงสื่อจากไซต์หนึ่งและโพสต์ไปยังอีกไซต์หนึ่ง คุณสามารถมิกซ์แอนด์แมทช์ได้เช่นกัน ดึงทวีตและโพสต์ไปที่ Reddit รวบรวมภาพ Instagram เพื่อโพสต์ไปยัง subreddits สร้างบอทและเป็นส่วนหนึ่งของอินเทอร์เน็ตจริง

สุดท้ายนี้ เพื่อให้กระบวนการนี้เป็นไปโดยอัตโนมัติ คุณจะต้องให้บอททำงานวนซ้ำบนเซิร์ฟเวอร์ ซึ่งอาจอยู่ในคอมพิวเตอร์ของคุณเองพร้อมตัวกำหนดเวลา หรือปัดฝุ่น Raspberry Pi เก่าที่อยู่ในตู้เสื้อผ้าของคุณ และดูโปรเจ็กต์ Twitter บอทแสนหวานสำหรับ Pi

แบ่งปัน แบ่งปัน ทวีต อีเมล นี่คือเหตุผลที่ FBI ออกคำเตือนสำหรับ Hive Ransomware

FBI ได้ออกคำเตือนเกี่ยวกับ ransomware ที่น่ารังเกียจโดยเฉพาะ นี่คือเหตุผลที่คุณต้องระวัง Hive ransomware เป็นพิเศษ

อ่านต่อไป
หัวข้อที่เกี่ยวข้อง
  • การเขียนโปรแกรม
  • Python
  • บอทโซเชียลมีเดีย
  • บทเรียนการเข้ารหัส
เกี่ยวกับผู้เขียน Tom Johnsen(ตีพิมพ์บทความ 3 รายการ)

ทอมเป็นวิศวกรซอฟต์แวร์จากฟลอริดา (ตะโกนบอกชายชาวฟลอริดา) ด้วยความหลงใหลในการเขียน ฟุตบอลวิทยาลัย (ไปจระเข้!), ต้อนรับคุณ และจุลภาคอ็อกซ์ฟอร์ด

เพิ่มเติมจาก Tom Johnsen

สมัครรับจดหมายข่าวของเรา

เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!

คลิกที่นี่เพื่อสมัครสมาชิก