見出し画像

【閲覧注意】API不要でXを操作できるpythonライブラリ"twikit"がヤバ過ぎた

ハロー、最近Xでの情報収集を完全に卒業したスマイルです('ω')ノ

皆様twitterAPIは使っていますでしょうか。外部から投稿したりポストを取得したり便利なAPIなんですが、有料かつ制限ありで使いにくいのがネックですよね。

今回はtwitterAPIと同等の機能を無料で実装できる"twikit"という、なんともやべぇpythonライブラリを見つけましたのでレポートをまとめました。

記事が面白かったらフォロー&♥よろしくお願いしますm(_ _)m


twikitで出来る事

とりあえずライブラリの概要を知るためにもtwikitで使いそうなやつを"機能別 > メソッド名"でまとめてみました。メソッド名が古い呼称のままなので、便宜的に旧ツイッター式の呼び方で進めます。

Xで商売している方 / ツール・アプリを作りたい方はブクマ推奨


◆ クライアント管理

  • login:指定されたログイン情報を使用してアカウントにログイン

  • logout:現在ログインしているアカウントからログアウト

  • get_cookies:クッキーを取得

  • set_cookies:クッキーを設定

  • load_cookies:ファイルからクッキーを読み込み

  • save_cookies:クッキーをファイルに保存

◆ ツイート操作

  • search_tweet:検索クエリに基づいてツイートを検索

  • get_similar_tweets:指定したツイートに類似するツイートを取得

  • create_tweet:新しいツイートを作成

  • delete_tweet:指定されたツイートを削除

  • favorite_tweet:ツイートにいいね

  • unfavorite_tweet:ツイートにしたいいねを解除

  • retweet:ツイートをリツイート

  • delete_retweet:リツイートを削除

  • reply: ツイートに返信

  • bookmark_tweet:ツイートをブックマークに追加

  • delete_bookmark:ブックマークからツイートを削除

  • create_scheduled_tweet:指定したタイムスタンプでツイートをスケジュール

  • delete_scheduled_tweet:スケジュールされたツイートを削除

◆ ユーザー操作

  • follow_user:ユーザーをフォロー

  • unfollow_user:ユーザーのフォローを解除

  • block_user:ユーザーをブロック

  • unblock_user:ユーザーのブロックを解除

  • mute_user:ユーザーをミュート

  • unmute_user:ユーザーのミュートを解除

◆ユーザー情報

  • get_user_by_screen_name:スクリーン名でユーザーを取得

  • get_user_by_id:IDでユーザーを取得

  • get_user_followers:特定のユーザーのフォロワーを取得

  • get_user_following:特定のユーザーがフォローしているユーザーを取得

  • get_user_verified_followers:認証されたフォロワーを取得

  • get_user_followers_you_know:共通のフォロワーを取得

  • get_user_subscriptions:ユーザーのサブスクリプションを取得

  • get_followers_ids:フォロワーのIDを取得

  • get_friends_ids:フォローしているユーザーのIDを取得

◆ メディア操作

  • upload_media:メディアをTwitterにアップロード

  • check_media_status:アップロードされたメディアのステータスを確認

  • create_media_metadata:アップロードされたメディアにメタデータを追加

◆ DM操作

  • send_dm:ダイレクトメッセージを送信

  • delete_dm:指定されたダイレクトメッセージを削除

  • add_reaction_to_message:メッセージに反応を追加

  • remove_reaction_from_message:メッセージから反応を削除

  • get_dm_history:特定のユーザーとのDM会話履歴を取得

  • send_dm_to_group:グループにメッセージを送信

  • get_group_dm_history:グループ内のDM会話履歴を取得

◆ リスト操作

  • create_list:リストを作成

  • edit_list_banner:リストのバナー画像を編集

  • delete_list_banner:リストのバナーを削除

  • edit_list:リスト情報を編集

  • add_list_member:ユーザーをリストに追加

  • remove_list_member:リストからユーザーを削除

  • get_lists:ユーザーのリストを取得

  • get_list:IDでリストを取得

  • get_list_tweets:リストからツイートを取得

  • get_list_members:リストのメンバーを取得

  • get_list_subscribers:リストの購読者を取得

  • search_list:クエリに基づいてリストを検索

◆ コミュニティ操作

  • search_community:クエリに基づいてコミュニティを検索

  • get_community:IDでコミュニティを取得

  • get_community_tweets:コミュニティからツイートを取得

  • get_communities_timeline:コミュニティのタイムラインからツイートを取得

  • join_community:コミュニティに参加

  • leave_community:コミュニティを退出

  • request_to_join_community:コミュニティへの参加をリクエスト

  • get_community_members:コミュニティのメンバーを取得

  • get_community_moderators:コミュニティのモデレーターを取得

  • search_community_tweet:コミュニティ内のツイートを検索

◆ トレンドと場所

  • get_trends:トレンドトピックを取得

  • get_available_locations:トレンドが取得できる場所を取得

  • get_place_trends:特定の場所のトレンドトピックを取得

◆ 通知操作

get_notifications:指定されたタイプに基づいて通知を取得

◆ ストリーミング

get_streaming_session:ストリーミングAPIと対話するためのセッションを返す


うーん、大体なんでも出来ちゃうAPIラッパーって事か。すげぇな。

公式のドキュメントはこちら。

gitはこちら。

twikitのリスク

めちゃくちゃ便利なtwikitですが一つ問題があります。それはtwikitは内部的にスクレイピングで動作する仕組みらしく、そしてXはスクレイピング禁止

つまり、そもそもの設計思想が利用規約に反しているっぽいので、ちゃんと考えて使わないとXからペナルティを食らっても不思議ではないっつー事です。

具体的にどうすりゃいいの?ってのは利用者の裁量ですので明言しませんが、"twitterAPI使いたくないからtwikit使おー"というノリでは少々リスクがあるかもしれません。

twikitの使い方

便利さとヤバさは分かって来たけど、使ってみない事にはなんとも言えない。と言う事で今は稼働していないアカウントで実際に試してみました。

サンプルスクリプト

まずはpipでインストール

pip install twikit

ツイートの検索から試してみよう

from twikit import Client

# Initialize client
client = Client('ja')

def search_tweets(keyword):
    # ログイン情報を使用してクライアントにログイン
    client.login(
        auth_info_1='メアド',
        auth_info_2='ユーザー名',
        password='パスワード'
    )

    # ツイートの検索
    tweets = client.search_tweet(keyword, 'Top', count=10)

    # 検索結果の表示
    for tweet in tweets:
        print(f"Tweet ID: {tweet.id}")
        print(f"User: {tweet.user.screen_name}")
        print(f"Text: {tweet.text}")
        print('-' * 50)

    # ログアウト
    client.logout()

# キーワードでツイートを検索する
keyword = "東京都知事"
search_tweets(keyword)

返り値がこちら

Tweet ID: 1809907459013873965
User: ppsh41_1945
Text: 8年間も東京都知事でありながら公約達成率ゼロな人を選んで、東京都民は大丈夫なの?

#東京都知事選挙2024 https://t.co/Ckmc7G6eEw
--------------------------------------------------
Tweet ID: 1809934278329094552
User: OkOkWanko
Text: ちょっと待って🫷
疑惑の総合商社の小池、石丸、蓮舫が公選法違反で被選挙権取消しになったら…田母神さん当選じゃん?㊗️🎊✨
刑事告発お願いします🤲
①小池:経歴詐称疑惑、裏金疑惑
②石丸:SNS拡散要因買収疑惑
③蓮舫:公衆の面前で事前運動疑惑
④田母神:疑惑無し→繰り上げ当選??
#東京都知事選 https://t.co/2kEmFAiFHB
--------------------------------------------------
Tweet ID: 1810099996278284518
User: aaa5074
Text: 今さら安野さんのマニフェストを報道してる。これが選挙期間中だったら、間違いなく政策論争の選挙戦になってたと思う。

今回の東京都知事選、相変わらず日本のメディアは腐ってた。

#東京都知事選選挙
#モーニングショー https://t.co/PXHZDZ1tF1
--------------------------------------------------
Tweet ID: 1810863954518032425
User: a_k_i_u_
Text: 東京都知事選。小池知事への都民の声に杉村太蔵さん「やめろコールで大合唱。本当に胸の痛むシーン。これはやっぱり選挙妨害に関しては厳しい 罰則があっていい。警察が駄目ですよと言えるような環境にしないと健全な選挙が成り立たない」と恐ろしい事を言っている。
#ワイドスクランブル https://t.co/Q4KiltqwD6
--------------------------------------------------
Tweet ID: 1808337476978893199
User: WadaHiro_hikone
Text: 「東京都知事に おれはなる!!!!」
って言うから一味になりました。
フーシャ村からいざグランドラインへ
#石丸伸二
#東京を動かそう https://t.co/3HcGyt6DoM
--------------------------------------------------
Tweet ID: 1810198995530371360
User: tamogami2024
Text: この度は東京都知事選でのご支援本当にありがとうございました!
我々スタッフとしましても候補者ご本人の体調を気遣いながらの戦いでしたが、
ご本人は後半になるにつれ益々血気盛んなお姿を見せてくれました。
むしろ、ご支援頂く皆様の体調を気遣い感謝し続けました。 https://t.co/f8wrJYzdQ8
--------------------------------------------------
Tweet ID: 1809952499954233468
User: OkOkWanko
Text: #小池都知事リコール署名運動 135万票でOK https://t.co/YvhjnzzL1j
--------------------------------------------------
Tweet ID: 1808007318757319107
User: himasoraakane
Text: すげーよな
ドトール関係から5000万借りてて
スパチャは1時間でぺこーらの誕生日超え
同接はぺこーらの3倍
個人献金は2ヶ月で岸田総理を超え日本一の2億円
石丸さん凄すぎて絶対に都知事になって欲しくない
#ナイス投票
#東京を動かそう
#東京都知事選
#石丸伸二 https://t.co/2afK8XR2TM
--------------------------------------------------
Tweet ID: 1809919447404335514
User: Human_Official4
Text: 東京終了及び日本終了のお知らせ
東京都知事選、なぜか、小池百合子氏がとう確で、石丸伸二が2位、3位が蓮舫。

あり得ません。
マスコミの不正情報操作及び不正選挙です。
そもそも、公職選挙法違反である、石丸伸二と蓮舫と小池百合子を捕まえない時点でおかしいです。 https://t.co/8C2gFceoYx
--------------------------------------------------

おぉ、あっさり動いた!

スクリプト実行と平行してアカウントに通知がいっぱい増えてる、何ごとかと思ったら、

なるほど??別端末から操作してる扱いになるのか。cookieをセットして呼び出す形にすれば回避できるらしい。

悪用厳禁!こんなアプリ作れるかも

今回はアイデアだけでコピペスクリプトとかは掲載しておりませんのでご注意下さい、仕組みまでは考えたので実際に動く物は作れるとは思います。

自動フォロワー増加bot

ここから先は

1,306字
この記事のみ ¥ 300
期間限定 PayPay支払いすると抽選でお得に!

よろしければサポートお願いします、頂いたサポートは活動費として使用させて頂きより有意義な記事を書けるように頑張ります!