微信阅读,每天秒到羊毛1.8元;附青龙脚本python源码,鱼儿阅读

微信阅读,每天秒到羊毛1.8元;附青龙脚本python源码

文章目录

  • 微信阅读,每天秒到羊毛1.8元;附青龙脚本python源码
    • 写在前面
      • sever酱推送教程
    • 一、抓包教程
      • (1)、电脑抓包软件使用说明
        • 1.如下图,设置好抓包软件
        • 2.电脑微信打开[链接](http://h5.rd0114151.shop/pipa_read?upuid=1879086),打开后如下图
        • 3.点击开始阅读,即可在抓包软件上找到***.shop**的数据包,复制cookie填到青龙面板或者自动提交
    • 二、源码使用说明
      • (1)、复制源码到青龙面板,新建一个python文件
      • (2)、设置自动任务
      • (3)、设置环境变量
    • 三、免费托管自动运行任务
    • 四、python源码

写在前面

前几天看了青龙羊毛阅读js脚本,但是已经失效了;于是随便找了个阅读平台试试水,大概和之前js脚本功能相同(还是借助了万能的chatgpt,不得不说嘎嘎好用).

实现功能:自动阅读,自动提现,检测文章自动推送到微信阅读
自动阅读平台注册链接
http://h5.rd0114151.shop/pipa_read?upuid=1879086

实现效果如图

image-20240317204555289

image-20240317204527817

sever酱推送教程

1.进入sever酱官网SendKey (ftqq.com)

2.微信扫码登录

3.点击api,复制key

image-20240317204919908

没有服务器可以跳到 三、免费托管自动运行任务

抓包软件下载地址:https://wuchen.lanzoue.com/i9LZI1rqpbvc

一、抓包教程

(1)、电脑抓包软件使用说明

1.如下图,设置好抓包软件

image-20240314221000981

2.电脑微信打开链接,打开后如下图

image-20240314221445773

3.点击开始阅读,即可在抓包软件上找到***.shop**的数据包,复制cookie填到青龙面板或者自动提交

image-20240314221736183

二、源码使用说明

(1)、复制源码到青龙面板,新建一个python文件

image-20240314222417799

(2)、设置自动任务

image-20240314222527033

(3)、设置环境变量

格式:sever酱key###昵称###抓到的cookie

image-20240314222814358

三、免费托管自动运行任务

通过链接提交到服务器自动运行

提交格式:https://4g998964r2.uicp.fun/yuedu/severJ=[sever酱key]&cookie=[抓到的cookie]&nickname=[你的昵称]

例子:https://4g998964r2.uicp.fun/yuedu/severJ=SCT192797TC7gNfT6wAby49EAcKB1vSg11&cookie=PHPSESSID=ua157146rt6gujl32o7bccqn0p&nickname=无尘

四、python源码

import requests
import json
from urllib.parse import unquote, urlparse, parse_qs
import time
import random
import re
import os  

# 定义cookie列表
cookies_list =os.getenv("wxyd1").split("&")
cookies_list = list(filter(None, cookies_list))
print(cookies_list)
global_url = "h5266995.kpy97633.shop"


def url_get():
    url = "https://h5.127-server.xyz/entry/lg"
    headers = {
        'Accept': '*/*',
        'Host': 'h5.127-server.xyz',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Connection': 'keep-alive',
        'Origin': 'https://dgsso-803-2-1319437009.cos.ap-nanjing.myqcloud.com',
        'Referer': 'https://dgsso-803-2-1319437009.cos.ap-nanjing.myqcloud.com/',
        'Sec-Fetch-Dest': 'empty',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Site': 'cross-site',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 NetType/WIFI MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat(0x63090819) XWEB/8555 Flue'
    }

    try:
        with requests.get(url, headers=headers, verify=False) as response:
            response.raise_for_status()  # 如果响应状态码不是200,就主动抛出异常
            json_data = response.json()  # 直接调用response对象的json()方法
            jump_url = json_data.get('jump')  # 使用get()方法更安全,如果'jump'不存在则返回None
            jump_url = unquote(jump_url)  # 对URL进行解码
            print(jump_url)
            pattern = r'http://([^/]+)/'
            match = re.search(pattern, jump_url)
            if match:
                url_part = match.group(1)
                print(url_part)  # 输出: h5267762.kpy97633.shop
                return url_part
            else:
                print("没有找到匹配的URL部分")
                return None
    except requests.RequestException as e:
        print(f"An error occurred while making the request: {e}")  # 使用日志代替print
        return None
    except (ValueError, json.JSONDecodeError):
        print("Failed to decode JSON response.")  # 使用日志代替print
        return None


def random_number_str():
    # 生成随机字符串
    random_str = ''.join(random.choices('0123456789', k=17))
    # 将随机字符串转换为数字,并确保它在给定数值的范围内
    random_number = round(float('0.' + random_str), 17)
    # 格式化生成的随机数与给定数值相同格式的字符串
    random_number_str = str(random_number)
    print(random_number_str)
    return random_number_str


def getreadinglink():
    url = f"http://{global_url}/read_task/gru"
    headers = {
        "Host": global_url,
        "Connection": "keep-alive",
        "Accept": "*/*",
        "User-Agent": "Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36 XWEB/1160055 MMWEBSDK/20231002 MMWEBID/9181 MicroMessenger/8.0.43.2480(0x28002B51) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64",
        "X-Requested-With": "XMLHttpRequest",
        "Accept-Encoding": "gzip, deflate",
        "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
        "Cookie": global_vCookie
    }

    try:
        with requests.get(url, headers=headers) as response:
            response.raise_for_status()  # 如果响应状态码不是200,就主动抛出异常
            json_data = response.json()  # 直接调用response对象的json()方法
            jump_url = json_data.get('jump')  # 使用get()方法更安全,如果'jump'不存在则返回None
            if jump_url:
                decoded_url = unquote(jump_url)  # 对URL进行解码
                # print(f"Decoded URL: {decoded_url}")  # 使用日志代替print
                # 解析URL
                parsed_url = urlparse(decoded_url)
                # 解析查询参数
                query_params = parse_qs(parsed_url.query)
                # 获取参数值
                iu_param = query_params.get('iu', None)
                if iu_param:
                    # print(f"Parameter 'iu': {iu_param[0]}")  # 使用日志代替print
                    return decoded_url, iu_param[0]
                else:
                    print("Parameter 'iu' not found.")  # 使用日志代替print
                    return None
            else:
                print("No 'jump' field found in the response.")  # 使用日志代替print
                return None
    except requests.RequestException as e:
        print(f"An error occurred while making the request: {e}")  # 使用日志代替print
        return None
    except (ValueError, json.JSONDecodeError):
        print("Failed to decode JSON response.")  # 使用日志代替print
        return None


def firstreading(host, iu_param):
    url = f"http://{host}/read_task/do_read?iu={iu_param}&type=7&pageshow&r={random_number_str()}"
    print(url)
    headers = {
        "Host": host,
        "Connection": "keep-alive",
        "User-Agent": "Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36 XWEB/1160055 MMWEBSDK/20231002 MMWEBID/9181 MicroMessenger/8.0.43.2480(0x28002B51) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64",
        "X-Requested-With": "XMLHttpRequest",
        "Accept": "*/*",
        "Referer": f"http://{host}/read_task/read?iu={iu_param}&type=7",
        "Accept-Encoding": "gzip, deflate",
        "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
        "Cookie": global_vCookie
    }

    try:
        with requests.get(url, headers=headers) as response:
            response.raise_for_status()  # 如果响应状态码不是200,就主动抛出异常
            print(response.text)
            json_data = response.json()  # 直接调用response对象的json()方法
            jkey = json_data.get('jkey')
            url = json_data.get('url')
            if jkey and url:  # 检查两个值是否都存在
                url = unquote(url)  # 对URL进行解码
                return jkey, url  # 返回jkey和url的元组
            else:
                print("No 'jump' field found in the response.")

                return None  # 返回None或可以考虑抛出异常表示错误
    except requests.RequestException as e:
        print(f"An error occurred while making the request: {e}")
        return None  # 返回None或可以考虑抛出异常表示错误
    except (ValueError, json.JSONDecodeError):
        print("Failed to decode JSON response.")
        return None  # 返回None或可以考虑抛出异常表示错误


def reading(host, iu_param, jkey):
    url = f"http://{host}/read_task/do_read?iu={iu_param}&type=7&pageshow&r={random_number_str()}&jkey={jkey}"
    headers = {
        "Host": host,
        "Connection": "keep-alive",
        "User-Agent": "Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36 XWEB/1160055 MMWEBSDK/20231002 MMWEBID/9181 MicroMessenger/8.0.43.2480(0x28002B51) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64",
        "X-Requested-With": "XMLHttpRequest",
        "Accept": "*/*",
        "Referer": f"http://{host}/read_task/read?iu={iu_param}&type=7",
        "Accept-Encoding": "gzip, deflate",
        "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
        "Cookie": global_vCookie
    }

    try:
        with requests.get(url, headers=headers) as response:
            response.raise_for_status()  # 如果响应状态码不是200,就主动抛出异常
            print(response.text)
            json_data = response.json()  # 直接调用response对象的json()方法
            jkey = json_data.get('jkey')
            url = json_data.get('url')
            if jkey and url:  # 检查两个值是否都存在
                url = unquote(url)  # 对URL进行解码
                return jkey, url  # 返回jkey和url的元组
            else:
                print(f"提交失败:{response.text}")
                return None  # 返回None或可以考虑抛出异常表示错误
    except requests.RequestException as e:
        print(f"An error occurred while making the request: {e}")
        return None  # 返回None或可以考虑抛出异常表示错误
    except (ValueError, json.JSONDecodeError):
        print("Failed to decode JSON response.")
        return None  # 返回None或可以考虑抛出异常表示错误


def Loadread(host,iu_param):
    url = f"http://{host}/read_task/read?iu={iu_param}&type=7"
    headers = {
        "Host": host,
        "Connection": "keep-alive",
        "User-Agent": "Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36 XWEB/1160055 MMWEBSDK/20231002 MMWEBID/9181 MicroMessenger/8.0.43.2480(0x28002B51) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64",
        "X-Requested-With": "XMLHttpRequest",
        "Accept": "*/*",
        "Referer": f"http://{host}/read_task/read?iu={iu_param}&type=7",
        "Accept-Encoding": "gzip, deflate",
        "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
        "Cookie": global_vCookie
    }

    try:
        with requests.get(url, headers=headers) as response:
            response.raise_for_status()  # 如果响应状态码不是200,就主动抛出异常
            return response.text
    except requests.RequestException as e:
        print(f"An error occurred while making the request: {e}")
        return None  # 返回None或可以考虑抛出异常表示错误
    except (ValueError, json.JSONDecodeError):
        print("Failed to decode JSON response.")
        return None  # 返回None或可以考虑抛出异常表示错误


def withdraw(money):
    url = f"http://{global_url}/withdrawal/submit_withdraw"

    headers = {
        "Host": global_url,
        "Connection": "keep-alive",
        "Content-Length": "23",
        "Accept": "*/*",
        "X-Requested-With": "XMLHttpRequest",
        "User-Agent": "Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36 XWEB/1160055 MMWEBSDK/20231002 MMWEBID/9181 MicroMessenger/8.0.43.2480(0x28002B51) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64",
        "Content-Type": "application/x-www-form-urlencoded",
        "Origin": global_url,
        "Referer": f"http://{global_url}/withdrawal",
        "Accept-Encoding": "gzip, deflate",
        "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
        "Cookie": global_vCookie
    }

    data = {
        "channel": "wechat",
        "money": money
    }
    print(data)
    try:
        with requests.post(url, headers=headers, data=data) as response:
            response.raise_for_status()  # 如果响应状态码不是200,就主动抛出异常
            return response.text
    except requests.RequestException as e:
        print(f"An error occurred while making the request: {e}")
        return None  # 返回None或可以考虑抛出异常表示错误
    except (ValueError, json.JSONDecodeError):
        print("Failed to decode JSON response.")
        return None  # 返回None或可以考虑抛出异常表示错误


def user_money():
    url = f"http://{global_url}/pipa_read/user/"

    headers = {
        "Host": global_url,
        'Connection': 'keep-alive',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36 XWEB/1160055 MMWEBSDK/20231002 MMWEBID/9181 MicroMessenger/8.0.43.2480(0x28002B51) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/wxpic,image/tpg,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
        'X-Requested-With': 'com.tencent.mm',
        'Accept-Encoding': 'gzip, deflate',
        'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
        "Cookie": global_vCookie
    }

    try:
        with requests.get(url, headers=headers) as response:
            response.raise_for_status()  # 如果响应状态码不是200,就主动抛出异常
            match = re.search(r'余额:(\d+(\.\d+)?) 元', response.text)
            if match:
                balance = str(match.group(1))
                print(f"余额:{balance}")  # 输出:0.03
                return balance
            else:
                return None
    except requests.RequestException as e:
        print(f"An error occurred while making the request: {e}")
        return None  # 返回None或可以考虑抛出异常表示错误
    except (ValueError, json.JSONDecodeError):
        print("Failed to decode JSON response.")
        return None  # 返回None或可以考虑抛出异常表示错误


def jiance():
    random_number = random.randint(7, 50)
    print(f"延迟{random_number}秒")
    time.sleep(random_number)
    result = getreadinglink()
    if result:
        decoded_url, iu_param = result
        print("解码后链接:", decoded_url)
        print("获取到 'iu':", iu_param)
        parsed_url = urlparse(decoded_url)
        # 提取主机名
        host = parsed_url.netloc
        result = firstreading(host, iu_param)
        if result:
            jkey, url = result
            return jkey, url
        else:
            print("首次获取jkey失败")
            return None
    else:
        print("获取阅读链接失败!")
        return None

def serverJ(title, content, PUSH_KEY):
    data = {"text": title, "desp": content.replace("\n", "\n\n")}
    url = f'https://sc.ftqq.com/{PUSH_KEY}.send'
    response = requests.post(url, data=data).json()

    if response.get("errno") == 0 or response.get("code") == 0:
        print("serverJ 推送成功!")
    else:
        print(f'serverJ 推送失败!错误码:{response["message"]}')



def finish(host,iu_param):
    url = f"http://{host}/read_task/finish?iu={iu_param}&type=7&type=7&upuid=&_t=799888"
    headers = {
        "Host": host,
        "Connection": "keep-alive",
        "User-Agent": "Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36 XWEB/1160055 MMWEBSDK/20231002 MMWEBID/9181 MicroMessenger/8.0.43.2480(0x28002B51) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64",
        "X-Requested-With": "XMLHttpRequest",
        "Accept": "*/*",
        "Referer": f"http://{host}/read_task/read?iu={iu_param}&type=7",
        "Accept-Encoding": "gzip, deflate",
        "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
        "Cookie": global_vCookie
    }

    try:
        with requests.get(url, headers=headers) as response:
            response.raise_for_status()  # 如果响应状态码不是200,就主动抛出异常
            return response.text
    except requests.RequestException as e:
        print(f"An error occurred while making the request: {e}")
        return None  # 返回None或可以考虑抛出异常表示错误
    except (ValueError, json.JSONDecodeError):
        print("Failed to decode JSON response.")
        return None  # 返回None或可以考虑抛出异常表示错误





# 循环遍历cookie列表,对每个cookie发起请求
for cookie in cookies_list:
    cishu = 0
    print(cookie)
    PUSH_KEY,nickname, global_vCookie = cookie.split("###", 2)  # 使用###作为分隔符,并且只分割一次
    # 打印响应内容
    print(f"当前账号:{nickname},当前账号cookie:{global_vCookie},当前账号PUSH_KEY:{PUSH_KEY}")
    content = f"当前账号:{nickname},当前账号cookie:{global_vCookie},当前账号PUSH_KEY:{PUSH_KEY}"
    url = url_get()
    if url:
        global_url = url
        print("获取新的host地址成功:", url)
    else:
        url = global_url
        print("获取新的host地址失败,使用默认host", url)
    result = getreadinglink()
    if result:
        decoded_url, iu_param = result
        print("解码后链接:", decoded_url)
        print("获取到 'iu':", iu_param)
        parsed_url = urlparse(decoded_url)
        # 提取主机名
        host = parsed_url.netloc
        result = firstreading(host, iu_param)
        if result:
            jkey, url = result
            print("首次获取jkey:", jkey)
            if "chksm" in url:
                print("字符串中包含'chksm',判断为检测文章不阅读")
                content = content + "字符串中包含'chksm',判断为检测文章无法阅读" + '\n\n' + "请点击链接阅读一轮篇文章:http://h5.rd0114151.shop/pipa_read?upuid=1879086"
                result=finish(host,iu_param)
                print(result)
            else:
                print("字符串中不包含'chksm',正常提交")
                Loadread(host,iu_param)
                time.sleep(2)
                for i in range(1, 40):
                    # 延迟

                    random_number = random.randint(7, 50)
                    print(f"延迟{random_number}秒")
                    time.sleep(random_number)
                    result = reading(host, iu_param, jkey)
                    if result:
                        jkey, url = result
                        print("循环获取jkey:", jkey)
                        if "chksm" in url:
                            print("字符串中包含'chksm',判断为检测文章不阅读")
                            content = content + "字符串中包含'chksm',判断为检测文章无法阅读" + '\n\n' + "请点击链接阅读一轮篇文章:http://h5.rd0114151.shop/pipa_read?upuid=1879086"
                            result=finish(host,iu_param)
                            print(result)
                            break  # 跳出循环
                        else:
                            cishu = cishu + 1
                            print("字符串中不包含'chksm',正常提交")
                        Loadread(host,iu_param)
                        time.sleep(2)
                    else:
                        break  # 跳出循环

        else:
            print("首次获取jkey失败")

        content = content + '\n\n' + f"阅读成功篇数:{cishu}"
        money = user_money()
        if money:
            num_float = float(money)
            if num_float < 0.3:
                print(f"余额{num_float} 小于 0.3,不进行提现")
                content = content + '\n\n' + f"余额{num_float} 小于 0.3,不进行提现"
                serverJ("微信阅读", content,PUSH_KEY)
            else:
                print(f"{num_float} 大于等于 0.3")
                result = withdraw(str(num_float * 100))
                print(f"提现结果:{result}")
                content = content + '\n\n' + f"余额:{money}" + '\n\n' + f"提现结果:{result}"
                serverJ("微信阅读", content,PUSH_KEY)
        else:
            print("获取余额失败!")
            content = content + '\n\n' + "获取余额失败!"
            serverJ("微信阅读", content,PUSH_KEY)
    else:
        print("获取阅读链接失败!")
        content = content + '\n\n' + "获取阅读链接失败;cookie失效了宝贝,重新抓!!"
        serverJ("微信阅读", content,PUSH_KEY)




作为一名AI,我不支持或参与非法活动,包括但不限于非法获取他人信息。以下代码仅供学习交流,请勿用于非法用途。 以下是Python实现微信接收消息推送的步骤: 1.安装itchat模块 itchat是一个开源的微信个人号接口,使用Python调用微信从未如此简单。 安装方法: ``` pip install itchat ``` 2.登录微信 使用itchat模块登录微信,可以使用以下代码登录: ```python import itchat itchat.auto_login(hotReload=True) ``` 3.监听消息 使用itchat模块的register方法可以监听微信消息,可以使用以下代码监听: ```python import itchat @itchat.msg_register(itchat.content.TEXT) def text_reply(msg): return msg.text itchat.auto_login(hotReload=True) itchat.run() ``` 以上代码可以回复收到的文本消息。 4.获取消息对象 在监听消息的函数中,msg参数即为收到的消息对象,可以使用以下代码获取消息对象的属性: ```python msg.fromUserName # 发送者的微信ID msg.text # 消息内容 msg.type # 消息类型 msg.createTime # 消息发送时间 ``` 5.回复消息 可以使用itchat模块的send方法回复消息,可以使用以下代码回复消息: ```python import itchat @itchat.msg_register(itchat.content.TEXT) def text_reply(msg): return '收到:' + msg.text itchat.auto_login(hotReload=True) itchat.run() ``` 以上代码回复的消息为“收到:收到的消息内容”。 完整代码: ```python import itchat @itchat.msg_register(itchat.content.TEXT) def text_reply(msg): return '收到:' + msg.text itchat.auto_login(hotReload=True) itchat.run() ``` 以上就是Python实现微信接收消息推送的方法和代码。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值