【原创】记一次痛苦的脚本编写——ctfhub自动签到脚本

admin 2023年1月8日02:33:57评论42 views字数 3738阅读12分27秒阅读模式

花了一天的时间最后还是没能写出来

先别说我菜,咱们看一张图

【原创】记一次痛苦的脚本编写——ctfhub自动签到脚本

什么鬼,没cookie,说实话,搞这个快一年了我还是第一次见

【原创】记一次痛苦的脚本编写——ctfhub自动签到脚本

真的心态崩了

好,这些咱后面再说

咱们先来复习一下selenium

Python自动化之selenium

前面的小知识我就不说了

咱们直接实战

利用selenium直接登录wordpress

# !/usr/bin/python
# -*- coding:utf-8 -*-
# time: 2020.8.7
from selenium import webdriver
import time
browser = webdriver.Chrome()#声明浏览器对象
browser.get('https://hellohy.top/wp-login.php')#访问页面
time.sleep(2)#等待2s以便页面加载完成
name = browser.find_element_by_id('user_login')#利用ID查找元素
name.send_keys('****')#填充数据
password = browser.find_element_by_id("user_pass")
password.send_keys('********')
time.sleep(1)
browser.find_element_by_id('wp-submit').click()#利用ID查找元素并点击
time.sleep(3)
browser.close()#关闭网页

利用cookie登录wordpress

cookie用这个

【原创】记一次痛苦的脚本编写——ctfhub自动签到脚本
# !/usr/bin/python
# -*- coding:utf-8 -*-
# time: 2020.8.7
import time
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://hellohy.top/')
browser.add_cookie({'name':'wordpress_logged_in_29983b4ed8ae9ddbaff67eb1f69ff441','value':'*********************************'})
time.sleep(5)
browser.refresh()#刷新页面

selenium扩展知识

Selenium基本操作方法

  1. 基础操作

# 请求网页
driver.get("https://www.baidu.com/")
# 关闭网页
driver.close()
# 关闭浏览器
driver.quit()
  1. 查找Html元素

# 根据ID来查找某个元素
driver.find_element_by_id('')
driver.find_element(BY.ID,"")
# 根据类名来查找某个元素
driver.find_element_by_class_name('')
driver.find_element(BY.CLASS_NAME,'')
# 根据name属性来找查找某个元素
driver.find_element_by_name("")
driver.find_element(BY.NAME,"")
# 根据标签名来查找某个元素
driver.find_element_by_tag_name('')
driver.find_element(BY.TAG_NAME'')
# 根据xpath语法来查找某个元素
driver.find_element_by_xpath('//div')
driver.find_element(BY.XPATH,'//div')
# 根据css选择器来查找某个元素
driver.find_element_by_css_selector('//div')
driver.find_element(BY.CSS_SELECTOR,'//div')

find_element是获取第一个满足条件的元素。find_elements是获取所有满足条件的元素。

  1. 操作表单元素
  • 操作输入框

# 找到输入框元素
inputTag = driver.find_element_by_id('kw')
# 填充数据
inputTag.send_keys("python")
# 清除数据
inputTag.clear()
  • 操作checkbox

# 选择checkbox内标签对应的name值
rememberTag = driver.find_element_by_name("rememberMe")
# 执行选中操作
rememberTag.click()
  • 操作select select元素不能直接点击。因为点击后还需要选中元素。这时候selenium就专门为select标签提供了一个类<mark style=”box-sizing: border-box;”>selenium.webdriver.support.ui.Select</mark>。将获取到的元素当成参数传到这个类中,创建这个对象。以后就可以使用这个对象进行选择了。

from selenium.webdriver.support.ui import Select
 # 选中这个标签,然后使用Select创建对象
 selectTag = Select(driver.find_element_by_name("jumpMenu"))
 # 根据索引选择
 selectTag.select_by_index(1)
 # 根据值选择
 selectTag.select_by_value("http://www.95yueba.com")
 # 根据可视的文本选择
 selectTag.select_by_visible_text("95秀客户端")
 # 取消选中所有选项
 selectTag.deselect_all()
  • 操作按钮

# 选中按钮
inputTag = driver.find_element_by_id('su')
# 点击
inputTag.click()

4.行为链

有时候在页面中的操作可能要有很多步,那么这时候可以使用鼠标行为链类ActionChains来完成。比如现在要将鼠标移动到某个元素上并执行点击事件。

# 获取输入框
inputTag = driver.find_element_by_id('kw')
# 获取提交按钮
submitTag = driver.find_element_by_id('su')
#初始化行为链
actions = ActionChains(driver)
# 输入框输入内容
actions.move_to_element(inputTag)
actions.send_keys_to_element(inputTag,'python')
# 点击提交按钮
actions.move_to_element(submitTag)
actions.click(submitTag)
# 执行行为链
actions.perform()

还有更多的鼠标相关的操作。

click_and_hold(element):点击但不松开鼠标。

context_click(element):右键点击。

double_click(element):双击。

5.Cookies操作

1.获取所有cookies

for cookie in driver.get_cookies():
    print(cookie)

2.根据cookie的key获取value

value = driver.get_cookie(key)

3.删除所有的cookie

driver.delete_all_cookies()

4.删除某个cookie

driver.delete_cookie(key)

6.切换页面

# 打开一个新的页面
driver.execute_script("window.open('"+url+"')")
# 切换到这个新的页面中
driver.switch_to_window(driver.window_handles[1])

自动签到脚本想法及扩展

快点写,今天搞的不能浪费了

前面都写了直接登录这里为啥就不行了呢?

行,这里可以这样搞

但是

验证码无论如何也搞不定

识别验证码不难难的是识别成功率低,低到什么程度

0%无一列成功,这还是我做了转灰度,二值化等处理后的结果

如果不经过处理根本就无法识别

经过半年的爬虫学习完全可以说稍微复杂一点的验证码比滑动验证,滑动拼图验证,点触验证难搞多了

没办法我又看见了一个机会

【原创】记一次痛苦的脚本编写——ctfhub自动签到脚本

懂吧,这东西是没有验证的

可是!!!

【原创】记一次痛苦的脚本编写——ctfhub自动签到脚本

换了三个浏览器全是这个

心态崩了呀

我还没放弃,在网上又见到了一种方法

打开我们的小ipad

【原创】记一次痛苦的脚本编写——ctfhub自动签到脚本

怎么说,可以从这里拿数据,完美

md,打不开!!!

心态又崩了

不要慌

【原创】记一次痛苦的脚本编写——ctfhub自动签到脚本

那意思是,还有知识盲区

好家伙,一百度全是盲区

有本地和服务器两种

关于cookie与本地 存储的区别的问题

1. cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。

我又兴致冲冲的去搞本地

然而selenium却不支持这种方式

然后我又在想口否搞微信,哎又失败了

最后有百度得知有如此神奇的方法

【原创】记一次痛苦的脚本编写——ctfhub自动签到脚本

md试几次根本就没用,认真看看貌似代码逻辑就有问题

不说了,心累

还有好多想说的但眼睛太疼了,想睡觉

【原创】记一次痛苦的脚本编写——ctfhub自动签到脚本

晚安各位

FROM:浅浅淡淡[hellohy]

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月8日02:33:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【原创】记一次痛苦的脚本编写——ctfhub自动签到脚本http://cn-sec.com/archives/1443417.html

发表评论

匿名网友 填写信息