版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_17249717/article/details/82708064
对于一个网页,我们不能连续点赞,测试发现是网页通过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()