Skip to content

Instantly share code, notes, and snippets.

@HoiDam
Created December 28, 2021 04:20
Show Gist options
  • Save HoiDam/c0c89447dcc03252594c6436b691aa67 to your computer and use it in GitHub Desktop.
Save HoiDam/c0c89447dcc03252594c6436b691aa67 to your computer and use it in GitHub Desktop.
Twitter Thingy
# 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 = "polyfyp111@outlook.com"
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