{"id":17630,"date":"2021-10-28T04:48:57","date_gmt":"2021-10-28T02:48:57","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=17630"},"modified":"2022-01-02T20:36:16","modified_gmt":"2022-01-02T19:36:16","slug":"twint","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=17630","title":{"rendered":"Twitter Intelligence Tool (TWINT) mit Web-Scraping-Technologie auf dem Raspberry Pi Zero nicht Pi Zero 2 W mit ARM-SoC Broadcom BCM2837 vier ARM Cortex-A53 und 64-Bit-taugliche ARMv8-Kerne"},"content":{"rendered":"<p>Das Twitter Intelligence Tool (<a href=\"https:\/\/github.com\/twintproject\/twint\">TWINT<\/a>) mit Web-Scraping-Technologie kann auch auf einem Raspberry Pi installiert werden.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/10\/twitter.png\" alt=\"\" width=\"1200\" height=\"794\" class=\"aligncenter size-full wp-image-17639\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/10\/twitter.png 1200w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/10\/twitter-300x199.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/10\/twitter-1024x678.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/10\/twitter-768x508.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><br \/>\nMit dem <a href=\"https:\/\/github.com\/twintproject\/twint\" rel=\"noopener\" target=\"_blank\">Web Scraper f\u00fcr Twitter<\/a>, mit dem man Tweets von Usern des Kurznachrichtendienstes einholen kann, ohne dabei vom Twitter API eingeschr\u00e4nkt zu werden l\u00e4uft unter der MIT-Lizenz (Anleitung <a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/10\/Twitter-Intelligence-Tool.pdf\">Twitter-Intelligence-Tool.pdf<\/a>). TWINT wurde in Python geschrieben, ist am April 2020 in Version 2.1.20 erschienen. Alle Funktionen gehen aber nicht mehr, weil sich die Twitter API ge\u00e4ndert hat. Z.b. wirft ein <strong>twint -u programmierung &#8211;following<\/strong> diesen Fehler:<\/p>\n<p><strong>CRITICAL:root:twint.feed:Follow:IndexError<\/strong><\/p>\n<p>Aber einiges geht doch noch. Also mal installieren mit:<\/p>\n<p><strong>pip3 install twint<\/strong><\/p>\n<p>wenn dann nicht alles geht, hat bei mir geholfen:<\/p>\n<pre class=\"lang:default decode:true \" >\r\nsudo apt-get install libatlas-base-dev\r\npip3 install --upgrade -e git+https:\/\/github.com\/twintproject\/twint.git@origin\/master#egg=twint\r\n<\/pre>\n<p>So ein erster Test, alle Befehle ausgeben mit <strong>twint -h<\/strong> &#8230;: <!--more--><\/p>\n<pre class=\"lang:default decode:true \" >TWINT - An Advanced Twitter Scraping Tool.\r\n\r\noptional arguments:\r\n  -h, --help            show this help message and exit\r\n  -u USERNAME, --username USERNAME\r\n                        User's Tweets you want to scrape.\r\n  -s SEARCH, --search SEARCH\r\n                        Search for Tweets containing this word or phrase.\r\n  -g GEO, --geo GEO     Search for geocoded Tweets.\r\n  --near NEAR           Near a specified city.\r\n  --location            Show user's location (Experimental).\r\n  -l LANG, --lang LANG  Search for Tweets in a specific language.\r\n  -o OUTPUT, --output OUTPUT\r\n                        Save output to a file.\r\n  -es ELASTICSEARCH, --elasticsearch ELASTICSEARCH\r\n                        Index to Elasticsearch.\r\n  --year YEAR           Filter Tweets before specified year.\r\n  --since DATE          Filter Tweets sent since date (Example: \"2017-12-27\r\n                        20:30:15\" or 2017-12-27).\r\n  --until DATE          Filter Tweets sent until date (Example: \"2017-12-27\r\n                        20:30:15\" or 2017-12-27).\r\n  --email               Filter Tweets that might have email addresses\r\n  --phone               Filter Tweets that might have phone numbers\r\n  --verified            Display Tweets only from verified users (Use with -s).\r\n  --csv                 Write as .csv file.\r\n  --tabs                Separate CSV fields with tab characters, not commas.\r\n  --json                Write as .json file\r\n  --hashtags            Output hashtags in seperate column.\r\n  --cashtags            Output cashtags in seperate column.\r\n  --userid USERID       Twitter user id.\r\n  --limit LIMIT         Number of Tweets to pull (Increments of 20).\r\n  --count               Display number of Tweets scraped at the end of\r\n                        session.\r\n  --stats               Show number of replies, retweets, and likes.\r\n  -db DATABASE, --database DATABASE\r\n                        Store Tweets in a sqlite3 database.\r\n  --to USERNAME         Search Tweets to a user.\r\n  --all USERNAME        Search all Tweets associated with a user.\r\n  --followers           Scrape a person's followers.\r\n  --following           Scrape a person's follows\r\n  --favorites           Scrape Tweets a user has liked.\r\n  --proxy-type PROXY_TYPE\r\n                        Socks5, HTTP, etc.\r\n  --proxy-host PROXY_HOST\r\n                        Proxy hostname or IP.\r\n  --proxy-port PROXY_PORT\r\n                        The port of the proxy server.\r\n  --tor-control-port TOR_CONTROL_PORT\r\n                        If proxy-host is set to tor, this is the control port\r\n  --tor-control-password TOR_CONTROL_PASSWORD\r\n                        If proxy-host is set to tor, this is the password for\r\n                        the control port\r\n  --essid [ESSID]       Elasticsearch Session ID, use this to differentiate\r\n                        scraping sessions.\r\n  --userlist USERLIST   Userlist from list or file.\r\n  --retweets            Include user's Retweets (Warning: limited).\r\n  --format FORMAT       Custom output format (See wiki for details).\r\n  --user-full           Collect all user information (Use with followers or\r\n                        following only).\r\n  -tl, --timeline       Collects every tweet from a User's Timeline. (Tweets,\r\n                        RTs &amp; Replies)\r\n  --translate           Get tweets translated by Google Translate.\r\n  --translate-dest TRANSLATE_DEST\r\n                        Translate tweet to language (ISO2).\r\n  --store-pandas STORE_PANDAS\r\n                        Save Tweets in a DataFrame (Pandas) file.\r\n  --pandas-type [PANDAS_TYPE]\r\n                        Specify HDF5 or Pickle (HDF5 as default)\r\n  -it [INDEX_TWEETS], --index-tweets [INDEX_TWEETS]\r\n                        Custom Elasticsearch Index name for Tweets.\r\n  -if [INDEX_FOLLOW], --index-follow [INDEX_FOLLOW]\r\n                        Custom Elasticsearch Index name for Follows.\r\n  -iu [INDEX_USERS], --index-users [INDEX_USERS]\r\n                        Custom Elasticsearch Index name for Users.\r\n  --debug               Store information in debug logs\r\n  --resume TWEET_ID     Resume from Tweet ID.\r\n  --videos              Display only Tweets with videos.\r\n  --images              Display only Tweets with images.\r\n  --media               Display Tweets with only images or videos.\r\n  --replies             Display replies to a subject.\r\n  -pc PANDAS_CLEAN, --pandas-clean PANDAS_CLEAN\r\n                        Automatically clean Pandas dataframe at every scrape.\r\n  -cq CUSTOM_QUERY, --custom-query CUSTOM_QUERY\r\n                        Custom search query.\r\n  -pt, --popular-tweets\r\n                        Scrape popular tweets instead of recent ones.\r\n  -sc, --skip-certs     Skip certs verification, useful for SSC.\r\n  -ho, --hide-output    Hide output, no tweets will be displayed.\r\n  -nr, --native-retweets\r\n                        Filter the results for retweets only.\r\n  --min-likes MIN_LIKES\r\n                        Filter the tweets by minimum number of likes.\r\n  --min-retweets MIN_RETWEETS\r\n                        Filter the tweets by minimum number of retweets.\r\n  --min-replies MIN_REPLIES\r\n                        Filter the tweets by minimum number of replies.\r\n  --links LINKS         Include or exclude tweets containing one o more links.\r\n                        If not specified you will get both tweets that might\r\n                        contain links or not.\r\n  --source SOURCE       Filter the tweets for specific source client.\r\n  --members-list MEMBERS_LIST\r\n                        Filter the tweets sent by users in a given list.\r\n  -fr, --filter-retweets\r\n                        Exclude retweets from the results.\r\n  --backoff-exponent BACKOFF_EXPONENT\r\n                        Specify a exponent for the polynomial backoff in case\r\n                        of errors.\r\n  --min-wait-time MIN_WAIT_TIME\r\n                        specifiy a minimum wait time in case of scraping limit\r\n                        error. This value will be adjusted by twint if the\r\n                        value provided does not satisfy the limits constraints<\/pre>\n<p>F\u00fcr Analysen, nat\u00fcrlich nur gegen den eigenen Twitter Account absetzen. Also mal die erste Abfrage an Nutzer <strong>programmierung<\/strong> (das bin ich) mit dem Suchbegriff <strong>mindmap<\/strong>:<\/p>\n<pre class=\"lang:default decode:true \" >twint -u programmierung -s mindmap<\/pre>\n<p>Hier das Ergebnis:<\/p>\n<pre class=\"lang:default decode:true \" >1453208321893273603 2021-10-27 05:53:57 +0200 &lt;programmierung&gt; #Mindmap: 6 Methods to Make Money with Cryptocurrencies  https:\/\/t.co\/PXKXvki85U\r\n1452333822066970634 2021-10-24 19:59:00 +0200 &lt;programmierung&gt; #crypto #btc #bitcoin #eth #Ethereum #cryptofit #bad #token #projects #pump #dump #hannover #langenhagen #mindmap #signsofbadcryptoprojects from  https:\/\/t.co\/SKegG22Gnm  https:\/\/t.co\/BaJmYdNCe9\r\n1452121162310422532 2021-10-24 05:53:58 +0200 &lt;programmierung&gt; #Mindmap: TOP 8 \u2013 Wie schaffe ich es, mich um mich selbst zu k\u00fcmmern?  https:\/\/t.co\/4y4LKQyurW\r\n1451396403729682435 2021-10-22 05:54:02 +0200 &lt;programmierung&gt; #Mindmap: 7 Anzeichen fehlender Selbstf\u00fcrsorge  https:\/\/t.co\/gOHmsScGHp\r\n1451018890365001729 2021-10-21 04:53:56 +0200 &lt;programmierung&gt; #Mindmap: JUnit Test  https:\/\/t.co\/Fl11MkX5p0\r\n1450973593085648898 2021-10-21 01:53:57 +0200 &lt;programmierung&gt; #Mindmap: Ganache Blockchain  https:\/\/t.co\/nmpbqFwCmu\r\n<\/pre>\n<p>Oder mal eine Abfrage an den User <strong>programmierung<\/strong> wir suchen <strong>maximal 20<\/strong> Eintr\u00e4ge mit dem Begriff <strong>raspberry<\/strong> und speichern das Ergebnis in ein Json Datei:<\/p>\n<pre class=\"lang:default decode:true \" >twint -u programmierung -s raspberry --limit 20 -o twitter-top-20-raspberry.json --json<\/pre>\n<p>Wir bekommen dann in der json Datei diese Daten:<\/p>\n<pre class=\"lang:default decode:true \" >1451894525614505990 2021-10-23 14:53:24 +0200 &lt;programmierung&gt; ua-parser-js updates garantieren keine Sicherheit und installiert Krypto-Miner auch auf Raspberry Pi? \u2013 allow a remote attacker to obtain sensitive information or take control of the system.  https:\/\/t.co\/C6uNXEiaQE\r\n1439135429303930882 2021-09-18 09:53:18 +0200 &lt;programmierung&gt; WordPress auf Sicherheitsl\u00fccken \u00fcberpr\u00fcfen mit WPScan auf einem Raspberry PI  unter Debian \u2013 es muss nicht immer Kali sein und \u201c I Still Have Faith In You\u201c  https:\/\/t.co\/PAiz6oMPKH\r\n1421635114828713984 2021-08-01 02:53:18 +0200 &lt;programmierung&gt; CA-Zertifikat mit Elliptic Curve Cryptography (ECC) Key auf dem Raspberry Pi f\u00fcr 10 Jahre erzeugen  https:\/\/t.co\/Su3O6g0U4r\r\n1421408785374093317 2021-07-31 11:53:57 +0200 &lt;programmierung&gt; Raspberry Pi Planespotter: Wieviele Flugzeuge wurden so empfangen in HAJ am Freitag?  https:\/\/t.co\/C98uiZSI3k\r\n1421363409447178241 2021-07-31 08:53:39 +0200 &lt;programmierung&gt; Wie k\u00f6nnen auf einem Raspberry Pi mit apt list alle m\u00f6glichen Packages updates angezeigt werden?  https:\/\/t.co\/HoWfurI8Mj\r\n1419687307221819401 2021-07-26 17:53:25 +0200 &lt;programmierung&gt; OpenSSL 3.0.0 beta selbst compilieren auf einem Raspberry Pi in ca. 1-2 Stunden  https:\/\/t.co\/sKi6SUpRf9\r\n1419053059162914820 2021-07-24 23:53:08 +0200 &lt;programmierung&gt; OpenSSL nicht nur mit dem Raspberry Pi  https:\/\/t.co\/tJQUjCAO1X\r\n1408514783645732867 2021-06-25 21:57:48 +0200 &lt;programmierung&gt; Wieviele Flugzeuge empf\u00e4ngt der Raspberry Pi bei mir in EDDV (HAJ) im Durchschnitt? &amp;gt; 400  https:\/\/t.co\/dngURlLaEN\r\n1402716556195504128 2021-06-09 21:57:42 +0200 &lt;programmierung&gt; Auslastung des Rechners (kein Raspberry Pi) bei Brute-Force oder mit anderen Worten 100%  https:\/\/t.co\/A0DPN5Zu2F\r\n1402474902893076481 2021-06-09 05:57:28 +0200 &lt;programmierung&gt; SSH Anmeldung an dem Raspberry Pi ohne Passwort mit Elliptische Kurve \u2013 ed25519 Key  https:\/\/t.co\/mC4G8vxPhI\r\n1401170483215753216 2021-06-05 15:34:10 +0200 &lt;programmierung&gt; #tor #darknet #raspberry #raspberrypi    https:\/\/t.co\/LwN3Qp3QRs  #crypto aber nicht #btc #bitcoin  https:\/\/t.co\/viHFabh75n\r\n1401161312105807877 2021-06-05 14:57:43 +0200 &lt;programmierung&gt; Kostenlos eine Webseite im Darknet mit Raspberry Pi bereitstellen \u00fcber Onion Service  https:\/\/t.co\/XaZkr2XeaT\r\n1399938087338319872 2021-06-02 05:57:04 +0200 &lt;programmierung&gt; Video: Raspberry Pi update bzw. upgrade Prozess per BPMN Flow  https:\/\/t.co\/OCS4NwWRiW\r\n1394200412878692354 2021-05-17 09:57:36 +0200 &lt;programmierung&gt; Release 21.05 von rtl_433 f\u00fcr den Raspberry Pi ver\u00f6ffentlicht um Temperatursensoren und Luftruck von Autoreifen (TPMS) u\u00e4. zu empfangen  https:\/\/t.co\/uIoBEdqz7d\r\n1383600488264830977 2021-04-18 03:57:17 +0200 &lt;programmierung&gt; Firewall in 10 Minuten einrichen mit UFW (Uncomplicated firewall) nicht nur auf dem Raspberry Pi  https:\/\/t.co\/zDljrH8iSv\r\n1380233382098055173 2021-04-08 20:57:36 +0200 &lt;programmierung&gt; Neue NodeRed Version 1.3.1 ver\u00f6ffentlicht auch f\u00fcr Docker auf dem Raspberry Pi (v6, v7)  https:\/\/t.co\/3H5myeWLDw\r\n1380228628248727562 2021-04-08 20:38:43 +0200 &lt;programmierung&gt; nice new #nodered #docker f\u00fcr den #raspberry pi Version 1.3.1   https:\/\/t.co\/OLomdE6DvY\r\n1377893011565187073 2021-04-02 09:57:48 +0200 &lt;programmierung&gt; \u00dcberwachung und Erkennung mit Raspberry Pi Kamera oder wie Z\u00e4hle ich die Besucher oder PKWs  https:\/\/t.co\/yy3WeNXD2z\r\n1376958384151347210 2021-03-30 20:03:56 +0200 &lt;programmierung&gt; Ergebnisse der Umfrage oder finde Dubletten auf dem Raspberry Pi mit fdupes  https:\/\/t.co\/JtoS8nn1Sc\r\n1373136666278379521 2021-03-20 05:57:47 +0200 &lt;programmierung&gt; VNC in 4 Schritte mit dem Raspberry Pi  https:\/\/t.co\/CU6I5kDsWs\r\n1372910173984067585 2021-03-19 14:57:47 +0200 &lt;programmierung&gt; In Pandemie wurde f\u00fcr den Raspberry Pi Imager eine neue Version 1.6 ver\u00f6ffentlicht mit hidden Dialog  https:\/\/t.co\/x46bUBdUDw<\/pre>\n<p>Es geht auch eine Abfrage mit Suchbegriffen und einen Ortsbezug, z.B. Langenhagen geht:<\/p>\n<pre class=\"lang:default decode:true \" >twint -s bitcoin --near Langenhagen<\/pre>\n<p>Da werden dann auch alle Eintr\u00e4ge von allen Nutzern angezeigt, und nicht nur f\u00fcr den eigenen Account \ud83d\ude09<\/p>\n<p>Und auch \u00fcber Python-Scripte kann man alles steuern, z.B. mein kleines <strong>suche.py<\/strong> Modul:<\/p>\n<pre class=\"lang:python decode:true \" >\r\n\r\nimport twint\r\n\r\nsearch = input(\"Eingabe des Suchbegriff:\");\r\ncity = input(\"Eingabe der Stadt:\")\r\n\r\nc = twint.Config()\r\nc.Search = search\r\nc.Near = city\r\nc.Limit = 20\r\nc.Populer_tweets = True\r\n\r\ntwint.run.Search(c)\r\n\r\n<\/pre>\n<p>Es kann wie folgt gestartet werden: <strong>python3 suche.py<\/strong><\/p>\n<p>Es folgen dann diese Eingabefelder:<br \/>\nEingabe des Suchbegriff:Blockchain<br \/>\nEingabe der Stadt:Langenhagen<\/p>\n<p>&#8230; Ausgabe des Ergebnis &#8230; und weitere Anregungen <a href=\"https:\/\/pypi.org\/project\/twint\/\" rel=\"noopener\" target=\"_blank\">hier<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Twitter Intelligence Tool (TWINT) mit Web-Scraping-Technologie kann auch auf einem Raspberry Pi installiert werden. Mit dem Web Scraper f\u00fcr Twitter, mit dem man Tweets von Usern des Kurznachrichtendienstes einholen kann, ohne dabei vom Twitter API eingeschr\u00e4nkt zu werden l\u00e4uft unter der MIT-Lizenz (Anleitung Twitter-Intelligence-Tool.pdf). TWINT wurde in Python geschrieben, ist am April 2020 in &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=17630\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eTwitter Intelligence Tool (TWINT) mit Web-Scraping-Technologie auf dem Raspberry Pi Zero nicht Pi Zero 2 W mit ARM-SoC Broadcom BCM2837 vier ARM Cortex-A53 und 64-Bit-taugliche ARMv8-Kerne\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[220,4023,1023,3388,1319],"tags":[2424,5067,5066,2309,2182,5063,5064,2831,256,5062,95,5065],"class_list":["post-17630","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-python","category-raspberry-pi","category-script","category-sicherheit-2","tag-abfrage","tag-artikel-pdf","tag-broadcom-bcm2837","tag-pdf","tag-programmierung","tag-pyhton","tag-python3","tag-py","tag-tool","tag-twint","tag-twitter","tag-zero-2-w"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/17630","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=17630"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/17630\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=17630"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=17630"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=17630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}