twitterのAPIを使わずにtweetしようと考えているのですが、tweetされません。
実行すると
[+] ログイン完了 HTTP ステータスコード:
302
[+]ツイート完了
HTTPステータスコード:
200
となりますが、tweetされてません。
どこか間違えがあれば教えて頂きたいです。
python
1from bs4 import BeautifulSoup 2from requests.exceptions import ConnectionError 3import requests 4import sys 5 6class TwitterTweet: 7 def __init__(self): 8 self.username = "名前" 9 self.password = "パスワード" 10 11 def tweet(self): 12 session = requests.Session() 13 14 headers = { 15 "user-agent": "Mozilla/5.0", 16 "accept":"text/html,application/xhtml+xml,application/xml;", 17 "accept-language":"ja,en-US;q=0.8,en;q=0.6", 18 "content-type":"application/x-www-form-urlencoded", 19 "origin":"https://twitter.com/", 20 "referer":"https://twitter.com/", 21 "upgrade-insecure-requests":"1" 22 } 23 payload = { 24 "session[username_or_email]":"", 25 "session[password]":"", 26 "remember_me":"1", 27 "return_to_ssl":"true", 28 "scribe_log":"", 29 "redirect_after_login":"/", 30 } 31 tweet = { 32 "authenticity_token":"", 33 "is_permalink_page":"false", 34 "page_context":"profile", 35 "place_id":"", 36 "status":"APIを使用していないツイート", 37 "tagged_users":"" 38 39 } 40 try: 41 response = session.get('https://twitter.com/',headers=headers,allow_redirects=False) 42 soup = BeautifulSoup(response.text,"lxml") 43 auth_token = soup.find(attrs={'name': 'authenticity_token'}).get('value') 44 print (auth_token) 45 except ConnectionError: 46 print ("[\*]Twitterへ接続できません") 47 sys.exit() 48 49 payload["authenticity_token"] = auth_token 50 payload["session[username_or_email]"] = self.username 51 payload["session[password]"] = self.password 52 53 try: 54 login = session.post('https://twitter.com/sessions',headers=headers,data=payload,allow_redirects=False) 55 if login.status_code ==302: 56 print ("[+] ログイン完了 HTTP ステータスコード:"), 57 print (login.status_code) 58 else: 59 print("[+] ログイン失敗 HTTP ステータスコード:"), 60 print(login.status_code) 61 except: 62 "[+]ログイン中に通信エラー" 63 64 try: 65 tweet = session.post("https://twitter.com/i/tweet/create",data=tweet,allow_redirects=True,headers=headers,cookies=login.cookies 66 ) 67 if tweet.status_code ==200: 68 print("[+]ツイート完了") 69 print("HTTPステータスコード:") 70 print(tweet.status_code) 71 else: 72 print("[+]ツイート失敗 HTTPステータスコード:") 73 print(tweet.status_code) 74 except: 75 print("ツイート中にエラー") 76if __name__ == "__main__": 77 TwiTweet = TwitterTweet() 78 TwiTweet.tweet() 79
そもそもなぜブラウザの操作を模倣しながらツイートしたいのでしょうか? Twitter の API を利用するのが良いのではないでしょうか。 https://dev.twitter.com/docs
回答2件
あなたの回答
tips
プレビュー