Cloudflare 小记

url:https://cn.airbusan.com/content/individual/?

 五秒盾打开后一般会出现这个页面,然后让你点击确认你是不是真人,点击成功后会跳往所访问的url页面。有时候不会出现这个点击  确认您是真人,会直接等待四五秒然后跳转。

会不会出现这个 确认你是真人的选项,则跟着浏览器的版本,ip质量,sele的驱动监测点等有关系。

 跳转主页面后则返回的几个cookie,其中cf_clearance最为重要,python单独拿出来cf_clearance请求就能请求成功。

需要注意的是,五秒盾绑定的是ip,请求头,与cookie,三者每次请求必须一致,少了,与别的串了,都会 出问题。

过无秒盾有很多种方法,一般是自动化工具做转发,或者直接硬刚逆了。

驱动下载地址为:CNPM Binaries Mirroricon-default.png?t=N2N8http://npm.taobao.org/mirrors/chromedriver/

大佬过无秒盾选择硬刚,菜鸡的我只能选择selenium 做转发。无秒盾的cookie有效期为半个小时,拿20分钟左右的代理ip用起来刚好。用redis做个消息队列,一个存,一个取,一般能达到数据量的要求。

import redis
import time
import json
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
# import undetected_chromedriver.v2 as uc
import undetected_chromedriver as uc
from seleniumwire import webdriver

class get_sele_cookie():
    def __init__(self):
        chrome_options = uc.ChromeOptions()
        chrome_options.add_argument("--disable-extensions")
        chrome_options.add_argument("--disable-popup-blocking")
        chrome_options.add_argument("--profile-directory=Default")
        chrome_options.add_argument("--ignore-certificate-errors")
        chrome_options.add_argument("--disable-plugins-discovery")
        chrome_options.add_argument("--incognito")
        chrome_options.add_argument('--no-first-run')
        chrome_options.add_argument('--no-service-autorun')
        chrome_options.add_argument('--no-default-browser-check')
        chrome_options.add_argument('--password-store=basic')
        chrome_options.add_argument('--no-sandbox')
        chrome_options.add_argument('--disable-gpu')
        chrome_options.add_argument(f'--proxy-server=http://222.90.3.70:4249')
        chrome_options.add_argument('--headless')  #
        self.cf_clearance = None
        self.redisdb = redis.Redis(host='',port=7007,password='Szjz',db=5)
        self.driver = uc.Chrome(options=chrome_options, version_main=97, use_subprocess=True,
                                executable_path="chromedriver.exe")

    def get_cookie(self, url):
        print(url)
        self.driver.get(url)
        time.sleep(7)
        if self.driver.find_element(By.XPATH, '/html/body/div[1]/div/div[1]/div/input'):
            self.driver.find_element(By.XPATH, '/html/body/div[1]/div/div[1]/div/input').click()
        userAgent = self.driver.execute_script("return navigator.userAgent")
        print(userAgent)
        time.sleep(5)
        cookies = self.driver.get_cookies()
        print(cookies)
        # time.sleep(500000)
        for i in cookies:
            if i.get('name') == 'cf_clearance':
                self.cf_clearance = i.get('value')
        return self.cf_clearance, userAgent

    def set_redis(self):
        for i in range(1):
            info = json.loads(self.redisdb.lpop('WU_cookies'))
            if time.time() - info[1]['time'] > 1200:
                continue
            else:
                self.redisdb.lpush('WU_cookies', json.dumps(info))
                break
    def main(self,url):
        cf_clearance, userAgent = self.get_cookie(url)
        if self.redisdb.llen('WU_cookies') < 50:
            info = {'cf_clearance': cf_clearance, 'time': time.time()}
            self.redisdb.lpush('FD_cookies', json.dumps(info))
        self.driver.close()
        # self.set_redis()

if __name__ == '__main__':
    while 1:
        try:
            get_sele_cookie().main('https://cn.airbusan.com/')
        except:
            continue
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
易语言过五秒云防护源码 开始分析吧 直接提交会进入五秒防护页面 有这条cookie就不会了  cf_clearance=e87fbd2a47fa12a88e753e1eb17c62ea3f43d170-1564667178-1800-150 看看cookie从哪儿来的 提交这个url返回的cookie  https://www.cbt-coin2.com/cdn-cgi/l/chk_jschl?s=651c8e8a2b2e045e9309f00586d153fd4009fbc7-1564667174-1800-AY+ThdHTv12dh4eGsyfd0dBFGQY/SQiD/LvNLfz5P5iZgQdGxxFTjj3mcsVSsg6uCaG6wEtfR9QT6K3PIYVpGuX1134g+jJr4gWWx4aypT2irbcfmxJ5iTwfb1cW0wgSW5FsbF0c8BnWWIVFR5TcgN8=&jschl_vc=05b889c20c40123cf2726c583aa17ea2&pass=1564667178.083-1Na9bTwNvd&jschl_answer=23.7315576809 刚才没这个页面 可以看到四个参数有三个都是页面直接获取的  主要是计算jschl_answer参数   看看js吧 <input type="hidden" name="s" value="a435cf6d78a0c00a88ed5a86b46f07f72bfa1c82-1564667350-1800-ARAmHfr4jOsB+pNpP2X8VsXCkw1saBv6c8+ugZoOfMQ2EA1HuWP8YctpxnvFzEFu6FWAA8pOZ5tpPugcx7lpB1O7yo8N5gq2uDwwRAM9V6gLvjJsXoWX4dnzKFcjeh6hcG7myKJgAWnz0kE3tt9fQMY="></input> <input type="hidden" name="jschl_vc" value="edbe716597c6d800ef2f9bce55cb218b"/> <input type="hidden" name="pass" value="1564667354.805-EYaNXMZWoC"/> <input type="hidden" id="jschl-answer" name="jschl_answer"/> 主要就是这段js  直接抠下来看看 这种直接删掉就好了  t这个参数好像很重要  我们看看t是什么 t是这个链接  我们把t这个参数直接填这个就行了 没用的就直接删掉  然后关键的来了  a的值等于这个  然后js里 我们需要的jschl_answer就是a  我们直接改下 让他返回这个 这就出来了。。。也不是很难  对比一下是一样的   直接改易语言代码吧 时间问题就不重写了 主要问题是必须要延时  不然返回不正常 看把  不加延时就还是防火墙   加上延时就正常了
根据提供的引用内容,以下是关于Java使用Cloudflare的介绍和示例: Cloudflare是一个提供CDN(内容分发网络)和安全性服务的公司。它的API允许开发人员通过编程方式与Cloudflare进行交互,以管理其网站的各种设置和功能。 在Java中使用Cloudflare API,可以使用CloudflareApiLibrary来简化和加快开发过程。该库提供了一些方便的方法和功能,使得与Cloudflare API的交互更加容易。 以下是一个使用CloudflareApiLibrary的示例,用于获取网站的DNS记录: ```java import com.cloudflare.api.CloudflareAccess; import com.cloudflare.api.constants.CloudflareValue; import com.cloudflare.api.requests.dns.DNSRecordCreateRequest; import com.cloudflare.api.requests.dns.DNSRecordGetRequest; import com.cloudflare.api.requests.dns.DNSRecordUpdateRequest;import com.cloudflare.api.results.CloudflareError; import com.cloudflare.api.results.CloudflareResponse; import com.cloudflare.api.results.DNSRecord; import com.cloudflare.api.results.Result; public class CloudflareExample { public static void main(String[] args) { // 设置Cloudflare API的访问密钥和邮箱 CloudflareAccess.getInstance().setAuthKey("YOUR_API_KEY"); CloudflareAccess.getInstance().setAuthEmail("YOUR_EMAIL"); // 获取网站的DNS记录 DNSRecordGetRequest getRequest = new DNSRecordGetRequest("YOUR_DOMAIN"); CloudflareResponse<Result<DNSRecord>> getResponse = getRequest.execute(); if (getResponse.isSuccess()) { Result<DNSRecord> result = getResponse.getResult(); for (DNSRecord record : result.getResult()) { System.out.println(record.getName() + " - " + record.getContent()); } } else { CloudflareError error = getResponse.getError(); System.out.println("Error: " + error.getMessage()); } } } ``` 这个示例演示了如何使用CloudflareApiLibrary来获取网站的DNS记录。首先,需要设置Cloudflare API的访问密钥和邮箱。然后,创建一个DNSRecordGetRequest对象,并指定要获取DNS记录的域名。最后,执行请求并处理响应,打印出每个DNS记录的名称和内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值