Python+Selenium個人網頁自動化點贊
阿新 • • 發佈:2018-12-09
對於一個網頁,我們不能連續點贊,測試發現是網頁通過cookie實現的點贊限制。當進入網頁時該網頁會在本地PC存放一個cookie值,當點選點贊按鈕時會向伺服器返回本地cookie存放的值,如果返回到伺服器的cookie值相同則該點贊無效。
我們可以清除瀏覽記錄,即清除本地cookie值,重新整理網頁就可以繼續點贊。
因此,我們的思路就是清除cookie——重新整理網頁——模擬點贊。
import time
from selenium import webdriver
from selenium.common.exceptions import TimeoutException, WebDriverException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
'''
通過開發者工具,發現網頁的cookie的形式如下,即name=cookie:
Cookie: JSESSIONID=5C3D1B40AF4DE06D9B010BCDCBD110FA
'''
'''
通過selenium開啟網頁,清除網頁儲存到本地的cookie,
然後定位到點贊按鈕,模擬點選,
迴圈模擬即可。
'''
def search():
try:
# 待測試網頁
url = SomeUrl
# 開啟網頁
driver = webdriver.Chrome()
driver.get(url)
# 設定等待時間,防止因網速的問題而沒有開啟網頁
wait = WebDriverWait(driver, 10)
# 設定迴圈,自動化點贊
for i in range(5):
print('網頁初始的cookie:', driver.get_cookies())
print('\n' )
# 儲存cookie的name的容器
cookie_name = []
# 獲取網頁的cookie,可能有很多個
cookies = driver.get_cookies()
# 獲取所有的cookie的name
for cookie in cookies:
cookie_name.append(cookie.get('name'))
# 刪除cookie的name 並 列印輸出網頁的cookie
for cookie in cookie_name:
driver.delete_cookie(name=cookie)
print('刪除cookie:', driver.get_cookies())
print('\n')
# 重新整理網頁
driver.refresh()
# 設定睡眠時長,防止系統檢測出惡意
time.sleep(20)
# 模擬點贊:先定位元素,再模擬點選
agree = wait.until(
EC.element_to_be_clickable((By.CSS_SELECTOR, '#_parise_imgobj_u6'))
)
agree.click()
# 列印輸出重新整理後網頁的cookie
print('重新整理網頁後的cookie:', driver.get_cookies())
print('\n')
print('*'*20)
driver.close()
except TimeoutException or WebDriverException:
# 異常處理,如果出現異常則重新開啟網頁
return search()
def main():
search()
if __name__ == '__main__':
main()