20-10-27 更新 6、7、9 题解法

B 站猜猜猜,DotA里叫”意识“,数学里叫“直觉得出”、“一眼看出”

本人半路出家,靠自己只做到第五题,第六题只做到 jsfuck,第八题想到 redis (其实之前几题就扫到了 redis 端口)但是连接部分还是看网络高手的题解,毕竟平时不常用 redis-cli

链接

第一题

直接在页面打开开发者工具,flag1 在 hidden 属性的 input 标签里

第二题

与第一题的页面相同,在第一题 input 标签下方

需要使用bilibili Security Browser浏览器访问~

明示的很明显了,改 UA 即可

第三题

开始有趣的猜猜猜环节,密码比女孩的心思还难猜

“后台管理系统”用户名当然是 admin,密码跑字典是没用的,就是 bilibili

我先是自造字典:22 33 陈睿 大会员 都排列组合了一遍

后来又 SQL 注入,均无果(估计这里根本就没用 SQL——老邢”用不用 SQL 没有章法,怎么注?怎么注?没法注“.jpg) Continue reading “Bilibili “首届安全挑战赛” Write Up”

20-10-27 更新:此方法对 steamdb 已失效

与 Cloudflare 的检测页面简直是一场无休止的斗争,一开始 Cloudflare 不会检测 Selenium,所以只需要手动等待 5 秒即可跳转到原始页面,后来 Cloudflare 加了 hcaptcha,于是我又使用了验证码识别平台 2captcha,详见

就在我写完 2captcha 没多久,Cloudflare 又更换了检测策略,页面还是和原来 5 秒检测页面一样,但是会检测到 Selenium 自动化,让你无限卡在验证页面不停加载

本文将分别展示在 Python 和 C# 下,如何使用 Selenium 通过 Cloudflare 的 5 秒检测页面

当然此对策只适用于当前的检测手段,Cloudflare 未来必然会再次更改检测策略 : )

Python

Python 想要通过检测比较简单,更换使用的库即可

经过一番搜索,发现很多针对 Cloudflare 检测的爬虫库都已经 Archive 了,还在更新的 cfscrape 也有一堆 issue 表示失效。但是,在 cfscrape 最新的一个 issue 中找到了 chromedriver 的魔改版 ultrafunkamsterdam / undetected-chromedriver ,此项目在近期的 1.5.0 更新中解决了 Cloudflare 的爬虫检测问题

  1. 首先安装 undetected_chromedriver
    pip install undetected_chromedriver
  2. 按如下代码新建 driver 对象
    import undetected_chromedriver as uc
    
    browser = uc.Chrome()
    browser.get(url)
    time.sleep(delay)
    html = browser.page_source

这样就可以成功通过 Chloudflare 检测,实测 steamdb.info 可以成功通过

C#(.NET)

.NET 平台没有类似 undetected_chromedriver 这样的 Nuget 包,但是从源码中可以看出,undetected_chromedriver 相较于原版 chromedriver 只做了两件事:

  1. 魔改 chromedriver.exe
  2. 添加两个启动参数

所以我们只需要拿到魔改后的 chromedriver,再添加与 undetected_chromedriver 中相同的两个参数即可通过反爬虫检测

魔改后的 chromedriver 可以直接复制 python 中 undetected_chromedriver 代码运行后生成的 chromedriver.exe,将其放在系统 PATH 内,C# 代码执行时会直接调用系统 PATH 的 chromedriver

代码如下:

using OpenQA.Selenium.Chrome;

internal ChromeDriver CreateDriver() {
    var chromeOptions = new ChromeOptions();
    chromeOptions.AddArgument("start-maximized");
    chromeOptions.AddArgument("--disable-blink-features=AutomationControlled");
    var mychrome = new ChromeDriver(chromeOptions);
    return mychrome;
}

Continue reading “如何通过 Cloudflare 反爬虫检测”