<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Авторизация в твиттере twitter]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=17783</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=17783&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Авторизация в твиттере twitter».]]></description>
		<lastBuildDate>Sat, 06 May 2023 14:53:15 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[AHK: Авторизация в твиттере twitter]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=158061#p158061</link>
			<description><![CDATA[<p>Пример кода получения твитов через поиск (нужна авторизация).<br />Для того, чтобы каждый раз не логиниться, после успешного логина стоит куда-нибудь сохранить csrf_token и auth_token и при следующем запуске скрипта их использовать.<br /></p><div class="codebox"><pre><code>username := &quot;username&quot;
email := &quot;email@gmail.com&quot;
password := &quot;password&quot;
authorization := &quot;Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA&quot;   ; twitter always uses exactly this one
auth_token = 0a0205c12365f6355613b6f2d486d474b6   ; if wrong, will be generated by script
csrf_token = b8caffd5c8d32770003427c21416baa0daff78c   ; if wrong, will be generated by script
WinHTTP := ComObjCreate(&quot;WinHTTP.WinHttpRequest.5.1&quot;)

getTweets:
url := &quot;https://twitter.com/i/api/2/search/adaptive.json?include_profile_interstitial_type=1&amp;include_blocking=1&amp;include_blocked_by=1&amp;include_followed_by=1&amp;include_want_retweets=1&amp;include_mute_edge=1&amp;include_can_dm=1&amp;include_can_media_tag=1&amp;include_ext_has_nft_avatar=1&amp;include_ext_is_blue_verified=1&amp;include_ext_verified_type=1&amp;include_ext_profile_image_shape=1&amp;skip_status=1&amp;cards_platform=Web-12&amp;include_cards=1&amp;include_ext_alt_text=true&amp;include_ext_limited_action_results=false&amp;include_quote_count=true&amp;include_reply_count=1&amp;tweet_mode=extended&amp;include_ext_views=true&amp;include_entities=true&amp;include_user_entities=true&amp;include_ext_media_color=true&amp;include_ext_media_availability=true&amp;include_ext_sensitive_media_warning=true&amp;include_ext_trusted_friends_metadata=true&amp;send_error_codes=true&amp;simple_quoted_tweet=true&amp;q=from%3AhtGOIW%20since%3A2009-11-01%20until%3A2011-01-01&amp;tweet_search_mode=live&amp;query_source=typed_query&amp;count=20&amp;requestContext=launch&amp;pc=1&amp;spelling_corrections=1&amp;include_ext_edit_control=true&amp;ext=mediaStats%2ChighlightedLabel%2ChasNftAvatar%2CvoiceInfo%2CbirdwatchPivot%2Cenrichments%2CsuperFollowMetadata%2CunmentionInfo%2CeditControl%2Cvibe&quot;
WinHTTP.Open(&quot;GET&quot;, url, true)
WinHTTP.SetRequestHeader(&quot;user-agent&quot;, &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36&quot;)
WinHTTP.SetRequestHeader(&quot;Pragma&quot;, &quot;no-cache&quot;)
WinHTTP.SetRequestHeader(&quot;Cache-Control&quot;, &quot;no-cache, no-store&quot;)
WinHTTP.SetRequestHeader(&quot;If-Modified-Since&quot;, &quot;Sat, 1 Jan 2000 00:00:00 GMT&quot;)
WinHTTP.SetRequestHeader(&quot;authorization&quot;, authorization)
WinHTTP.SetRequestHeader(&quot;x-csrf-token&quot;, csrf_token)
WinHTTP.SetRequestHeader(&quot;cookie&quot;, &quot;auth_token=&quot; auth_token &quot;; ct0=&quot; csrf_token)
WinHTTP.Send()
WinHTTP.WaitForResponse()
if RegexMatch(WinHTTP.ResponseText, &quot;^\{&quot;&quot;errors&quot;&quot;&quot;)
{
   GoSub login
   GoTo getTweets
}
msgbox % WinHTTP.ResponseText
return

login:
WinHTTP.Open(&quot;GET&quot;, &quot;https://twitter.com/i/flow/login&quot;, true)
WinHTTP.SetRequestHeader(&quot;user-agent&quot;, &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36&quot;)
WinHTTP.SetRequestHeader(&quot;Pragma&quot;, &quot;no-cache&quot;)
WinHTTP.SetRequestHeader(&quot;Cache-Control&quot;, &quot;no-cache, no-store&quot;)
WinHTTP.SetRequestHeader(&quot;If-Modified-Since&quot;, &quot;Sat, 1 Jan 2000 00:00:00 GMT&quot;)
WinHTTP.Send()
WinHTTP.WaitForResponse()
RegexMatch(WinHTTP.ResponseText, &quot;s)document\.cookie=&quot;&quot;gt=(.+?);&quot;, match)
guest_token := match1

body = {&quot;input_flow_data&quot;:{&quot;flow_context&quot;:{&quot;debug_overrides&quot;:{},&quot;start_location&quot;:{&quot;location&quot;:&quot;manual_link&quot;}}},&quot;subtask_versions&quot;:{&quot;action_list&quot;:2,&quot;alert_dialog&quot;:1,&quot;app_download_cta&quot;:1,&quot;check_logged_in_account&quot;:1,&quot;choice_selection&quot;:3,&quot;contacts_live_sync_permission_prompt&quot;:0,&quot;cta&quot;:7,&quot;email_verification&quot;:2,&quot;end_flow&quot;:1,&quot;enter_date&quot;:1,&quot;enter_email&quot;:2,&quot;enter_password&quot;:5,&quot;enter_phone&quot;:2,&quot;enter_recaptcha&quot;:1,&quot;enter_text&quot;:5,&quot;enter_username&quot;:2,&quot;generic_urt&quot;:3,&quot;in_app_notification&quot;:1,&quot;interest_picker&quot;:3,&quot;js_instrumentation&quot;:1,&quot;menu_dialog&quot;:1,&quot;notifications_permission_prompt&quot;:2,&quot;open_account&quot;:2,&quot;open_home_timeline&quot;:1,&quot;open_link&quot;:1,&quot;phone_verification&quot;:4,&quot;privacy_options&quot;:1,&quot;security_key&quot;:3,&quot;select_avatar&quot;:4,&quot;select_banner&quot;:2,&quot;settings_list&quot;:7,&quot;show_code&quot;:1,&quot;sign_up&quot;:2,&quot;sign_up_review&quot;:4,&quot;tweet_selection_urt&quot;:1,&quot;update_users&quot;:1,&quot;upload_media&quot;:1,&quot;user_recommendations_list&quot;:4,&quot;user_recommendations_urt&quot;:1,&quot;wait_spinner&quot;:3,&quot;web_modal&quot;:1}}
WinHTTP.Open(&quot;POST&quot;, &quot;https://api.twitter.com/1.1/onboarding/task.json?flow_name=login&quot;, true)
WinHTTP.SetRequestHeader(&quot;user-agent&quot;, &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36&quot;)
WinHTTP.SetRequestHeader(&quot;Pragma&quot;, &quot;no-cache&quot;)
WinHTTP.SetRequestHeader(&quot;Cache-Control&quot;, &quot;no-cache, no-store&quot;)
WinHTTP.SetRequestHeader(&quot;If-Modified-Since&quot;, &quot;Sat, 1 Jan 2000 00:00:00 GMT&quot;)
WinHTTP.SetRequestHeader(&quot;content-type&quot;, &quot;application/json&quot;)
WinHTTP.SetRequestHeader(&quot;authorization&quot;, authorization)
WinHTTP.SetRequestHeader(&quot;x-guest-token&quot;, guest_token)
WinHTTP.Send(body)
WinHTTP.WaitForResponse()
RegexMatch(WinHTTP.ResponseText, &quot;s)&quot;&quot;flow_token&quot;&quot;:&quot;&quot;(.+?)&quot;&quot;&quot;, match)
flow_token := match1

body = {&quot;flow_token&quot;:&quot;%flow_token%&quot;,&quot;subtask_inputs&quot;:[]}
WinHTTP.Open(&quot;POST&quot;, &quot;https://api.twitter.com/1.1/onboarding/task.json&quot;, true)
WinHTTP.SetRequestHeader(&quot;user-agent&quot;, &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36&quot;)
WinHTTP.SetRequestHeader(&quot;Pragma&quot;, &quot;no-cache&quot;)
WinHTTP.SetRequestHeader(&quot;Cache-Control&quot;, &quot;no-cache, no-store&quot;)
WinHTTP.SetRequestHeader(&quot;If-Modified-Since&quot;, &quot;Sat, 1 Jan 2000 00:00:00 GMT&quot;)
WinHTTP.SetRequestHeader(&quot;content-type&quot;, &quot;application/json&quot;)
WinHTTP.SetRequestHeader(&quot;authorization&quot;, authorization)
WinHTTP.SetRequestHeader(&quot;x-guest-token&quot;, guest_token)
WinHTTP.Send(body)
WinHTTP.WaitForResponse()
RegexMatch(WinHTTP.ResponseText, &quot;s)&quot;&quot;flow_token&quot;&quot;:&quot;&quot;(.+?)&quot;&quot;&quot;, match)
flow_token := match1

body = {&quot;flow_token&quot;:&quot;%flow_token%&quot;,&quot;subtask_inputs&quot;:[{&quot;subtask_id&quot;:&quot;LoginEnterUserIdentifierSSO&quot;,&quot;settings_list&quot;:{&quot;setting_responses&quot;:[{&quot;key&quot;:&quot;user_identifier&quot;,&quot;response_data&quot;:{&quot;text_data&quot;:{&quot;result&quot;:&quot;%username%&quot;}}}],&quot;link&quot;:&quot;next_link&quot;}}]}
WinHTTP.Open(&quot;POST&quot;, &quot;https://api.twitter.com/1.1/onboarding/task.json&quot;, true)
WinHTTP.SetRequestHeader(&quot;user-agent&quot;, &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36&quot;)
WinHTTP.SetRequestHeader(&quot;Pragma&quot;, &quot;no-cache&quot;)
WinHTTP.SetRequestHeader(&quot;Cache-Control&quot;, &quot;no-cache, no-store&quot;)
WinHTTP.SetRequestHeader(&quot;If-Modified-Since&quot;, &quot;Sat, 1 Jan 2000 00:00:00 GMT&quot;)
WinHTTP.SetRequestHeader(&quot;content-type&quot;, &quot;application/json&quot;)
WinHTTP.SetRequestHeader(&quot;authorization&quot;, authorization)
WinHTTP.SetRequestHeader(&quot;x-guest-token&quot;, guest_token)
WinHTTP.Send(body)
WinHTTP.WaitForResponse()
RegexMatch(WinHTTP.ResponseText, &quot;s)&quot;&quot;flow_token&quot;&quot;:&quot;&quot;(.+?)&quot;&quot;&quot;, match)
flow_token := match1

if InStr(WinHTTP.ResponseText, &quot;LoginEnterAlternateIdentifierSubtask&quot;)
{
   body = {&quot;flow_token&quot;:&quot;%flow_token%&quot;,&quot;subtask_inputs&quot;:[{&quot;subtask_id&quot;:&quot;LoginEnterAlternateIdentifierSubtask&quot;,&quot;enter_text&quot;:{&quot;text&quot;:&quot;%email%&quot;,&quot;link&quot;:&quot;next_link&quot;}}]}
   WinHTTP.Open(&quot;POST&quot;, &quot;https://api.twitter.com/1.1/onboarding/task.json&quot;, true)
   WinHTTP.SetRequestHeader(&quot;user-agent&quot;, &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36&quot;)
   WinHTTP.SetRequestHeader(&quot;Pragma&quot;, &quot;no-cache&quot;)
   WinHTTP.SetRequestHeader(&quot;Cache-Control&quot;, &quot;no-cache, no-store&quot;)
   WinHTTP.SetRequestHeader(&quot;If-Modified-Since&quot;, &quot;Sat, 1 Jan 2000 00:00:00 GMT&quot;)
   WinHTTP.SetRequestHeader(&quot;content-type&quot;, &quot;application/json&quot;)
   WinHTTP.SetRequestHeader(&quot;authorization&quot;, authorization)
   WinHTTP.SetRequestHeader(&quot;x-guest-token&quot;, guest_token)
   WinHTTP.Send(body)
   WinHTTP.WaitForResponse()
   RegexMatch(WinHTTP.ResponseText, &quot;s)&quot;&quot;flow_token&quot;&quot;:&quot;&quot;(.+?)&quot;&quot;&quot;, match)
   flow_token := match1
}

body = {&quot;flow_token&quot;:&quot;%flow_token%&quot;,&quot;subtask_inputs&quot;:[{&quot;subtask_id&quot;:&quot;LoginEnterPassword&quot;,&quot;enter_password&quot;:{&quot;password&quot;:&quot;%password%&quot;,&quot;link&quot;:&quot;next_link&quot;}}]}
WinHTTP.Open(&quot;POST&quot;, &quot;https://api.twitter.com/1.1/onboarding/task.json&quot;, true)
WinHTTP.SetRequestHeader(&quot;user-agent&quot;, &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36&quot;)
WinHTTP.SetRequestHeader(&quot;Pragma&quot;, &quot;no-cache&quot;)
WinHTTP.SetRequestHeader(&quot;Cache-Control&quot;, &quot;no-cache, no-store&quot;)
WinHTTP.SetRequestHeader(&quot;If-Modified-Since&quot;, &quot;Sat, 1 Jan 2000 00:00:00 GMT&quot;)
WinHTTP.SetRequestHeader(&quot;content-type&quot;, &quot;application/json&quot;)
WinHTTP.SetRequestHeader(&quot;authorization&quot;, authorization)
WinHTTP.SetRequestHeader(&quot;x-guest-token&quot;, guest_token)
WinHTTP.Send(body)
WinHTTP.WaitForResponse()
RegexMatch(WinHTTP.ResponseText, &quot;s)&quot;&quot;flow_token&quot;&quot;:&quot;&quot;(.+?)&quot;&quot;&quot;, match)
flow_token := match1

body = {&quot;flow_token&quot;:&quot;%flow_token%&quot;,&quot;subtask_inputs&quot;:[{&quot;subtask_id&quot;:&quot;AccountDuplicationCheck&quot;,&quot;check_logged_in_account&quot;:{&quot;link&quot;:&quot;AccountDuplicationCheck_false&quot;}}]}
WinHTTP.Open(&quot;POST&quot;, &quot;https://api.twitter.com/1.1/onboarding/task.json&quot;, true)
WinHTTP.SetRequestHeader(&quot;user-agent&quot;, &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36&quot;)
WinHTTP.SetRequestHeader(&quot;Pragma&quot;, &quot;no-cache&quot;)
WinHTTP.SetRequestHeader(&quot;Cache-Control&quot;, &quot;no-cache, no-store&quot;)
WinHTTP.SetRequestHeader(&quot;If-Modified-Since&quot;, &quot;Sat, 1 Jan 2000 00:00:00 GMT&quot;)
WinHTTP.SetRequestHeader(&quot;content-type&quot;, &quot;application/json&quot;)
WinHTTP.SetRequestHeader(&quot;authorization&quot;, authorization)
WinHTTP.SetRequestHeader(&quot;x-guest-token&quot;, guest_token)
WinHTTP.Send(body)
WinHTTP.WaitForResponse()
RegexMatch(WinHTTP.getallresponseheaders, &quot;s)Set-Cookie: ct0=(.+?);.+?Set-Cookie: auth_token=(.+?);&quot;, match)
csrf_token := match1, auth_token := match2

WinHTTP.Open(&quot;GET&quot;, &quot;https://twitter.com/i/api/graphql/XeaGEEWXp54Km4mVNvcMmg/Viewer?variables=%7B%22withCommunitiesMemberships%22%3Atrue%2C%22withSubscribedTab%22%3Atrue%2C%22withCommunitiesCreation%22%3Atrue%7D&amp;features=%7B%22blue_business_profile_image_shape_enabled%22%3Atrue%2C%22responsive_web_graphql_exclude_directive_enabled%22%3Atrue%2C%22verified_phone_label_enabled%22%3Afalse%2C%22responsive_web_graphql_skip_user_profile_image_extensions_enabled%22%3Afalse%2C%22responsive_web_graphql_timeline_navigation_enabled%22%3Atrue%7D&quot;, true)
WinHTTP.SetRequestHeader(&quot;user-agent&quot;, &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36&quot;)
WinHTTP.SetRequestHeader(&quot;Pragma&quot;, &quot;no-cache&quot;)
WinHTTP.SetRequestHeader(&quot;Cache-Control&quot;, &quot;no-cache, no-store&quot;)
WinHTTP.SetRequestHeader(&quot;If-Modified-Since&quot;, &quot;Sat, 1 Jan 2000 00:00:00 GMT&quot;)
WinHTTP.SetRequestHeader(&quot;authorization&quot;, authorization)
WinHTTP.SetRequestHeader(&quot;x-csrf-token&quot;, csrf_token)
WinHTTP.Send()
WinHTTP.WaitForResponse()
RegexMatch(WinHTTP.getallresponseheaders, &quot;s)Set-Cookie: ct0=(.+?);&quot;, match)
csrf_token := match1
msgbox % &quot;auth_token = &quot; auth_token &quot;`ncsrf_token = &quot; csrf_token
return</code></pre></div><p><a href="http://forum.script-coding.com/viewtopic.php?id=17784">Тема для обсуждения</a></p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 06 May 2023 14:53:15 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=158061#p158061</guid>
		</item>
	</channel>
</rss>
