Created
December 28, 2021 04:20
-
-
Save HoiDam/c0c89447dcc03252594c6436b691aa67 to your computer and use it in GitHub Desktop.
Twitter Thingy
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# pip install selenium webdriver_manager | |
from selenium import webdriver | |
from selenium.webdriver.common.keys import Keys | |
from webdriver_manager.chrome import ChromeDriverManager | |
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities | |
import time | |
import json | |
acc = "[email protected]" | |
pw = "1fjasnf1f" | |
user = "fyppppppppp2" | |
getHTTP = "https://caps.twitter.com/v2/capi/passthrough/1?twitter:string:card_uri=card://1474358963638796293&twitter:string:response_card_name=poll2choice_text_only&twitter:string:cards_platform=Web-12" | |
postLink = "https://twitter.com/1fyp1/status/1474358964477661186" | |
user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15" | |
caps = DesiredCapabilities.CHROME | |
caps['goog:loggingPrefs'] = {'performance': 'ALL'} | |
opt = webdriver.ChromeOptions() | |
driver = webdriver.Chrome(ChromeDriverManager().install(),desired_capabilities=caps, options=opt) | |
# 清空 window.navigator | |
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { | |
"source": """ | |
Object.defineProperty(navigator, 'webdriver', { | |
get: () => undefined | |
}) | |
""" | |
}) | |
driver.get('https://twitter.com') | |
time.sleep(2) | |
driver.execute_script(f'window.scrollTo(0, 200)') # 自動往下捲動 200px | |
login = driver.find_element_by_css_selector('a[href="/login"]') # 取得登入按鈕 | |
login.click() | |
time.sleep(4) | |
# 取得輸入 email 的輸入框 | |
username = driver.find_element_by_css_selector('input[autocomplete="username"]') | |
username.send_keys(acc) # 輸入 email | |
print('輸入 email 完成') | |
# 取得畫面上所有按鈕 ( 使用 elements ) | |
buttons = driver.find_elements_by_css_selector('div[role="button"]') | |
for i in buttons: | |
if i.text == '下一步' or i.text == 'Next': | |
i.click() # 如果按鈕是「下一步」或「Next」就點擊 | |
print('點擊下一步') | |
break | |
time.sleep(2) # 等待兩秒頁面載入後繼續 | |
try: | |
check = driver.find_element_by_css_selector('input[autocomplete="on"]') | |
check.send_keys(user) # 輸入帳號 | |
buttons = driver.find_elements_by_css_selector('div[role="button"]') | |
for i in buttons: | |
if i.text == '下一步' or i.text == 'Next': | |
i.click() # 如果按鈕是「下一步」或「Next」就點擊 | |
print('驗證使用者帳號,點擊下一步') | |
break | |
time.sleep(2) # 等待兩秒頁面載入後繼續 | |
except: | |
print('ok') | |
time.sleep(2) # 如果沒有出現安全性畫面,等待兩秒頁面載入後繼續 | |
pwd = driver.find_element_by_css_selector('input[autocomplete="current-password"]') | |
pwd.send_keys(pw) | |
print('輸入密碼') | |
buttons = driver.find_elements_by_css_selector('div[role="button"]') | |
for i in buttons: | |
if i.text == '登入' or i.text == 'Log in': | |
i.click() | |
print('點擊登入') | |
break | |
time.sleep(2) | |
driver.execute_script("window.open('"+ getHTTP +"','_blank')") | |
# time.sleep(10) | |
# request_log = driver.get_log('performance') | |
# # print(request_log) | |
# for i in range(len(request_log)): | |
# message = json.loads(request_log[i]['message']) | |
# message = message['message']['params'] | |
# # .get() 方式獲取是了避免欄位不存在時報錯 | |
# request = message.get('request') | |
# if(request is None): | |
# continue | |
# url = request.get('url') | |
# print(url) | |
# if(url == getHTTP): | |
# # 得到requestId | |
# print(message['requestId']) | |
# # 通過requestId獲取介面內容 | |
# content = driver.execute_cdp_cmd('Network.getResponseBody',{'requestId': message['requestId']}) | |
# print(content) | |
# break |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment