Python-编写代码刷博客访问量

 最近刚安装了python,试着用python写点小工具,就尝试了一下博文的刷访问量,仅仅是作业学习,大家不要拿代码搞恶意破坏

import requests
import re
import time
payload = ""
# 请求头
headers = {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
    "Cookie": "l=AurqcPuigwQdnQv7WvAfCoR1OlrRQW7h; isg=BHp6mNB79CHqYXpVEiRteXyyyKNcg8YEwjgLqoRvCI3ddxqxbLtOFUBGwwOrZ3ad; thw=cn; cna=VsJQERAypn0CATrXFEIahcz8; t=0eed37629fe7ef5ec0b8ecb6cd3a3577; tracknick=tb830309_22; _cc_=UtASsssmfA%3D%3D; tg=0; ubn=p; ucn=unzbyun; x=e%3D1%26p%3D*%26s%3D0%26c%3D0%26f%3D0%26g%3D0%26t%3D0%26__ll%3D-1%26_ato%3D0; miid=981798063989731689; hng=CN%7Czh-CN%7CCNY%7C156; um=0712F33290AB8A6D01951C8161A2DF2CDC7C5278664EE3E02F8F6195B27229B88A7470FD7B89F7FACD43AD3E795C914CC2A8BEB1FA88729A3A74257D8EE4FBBC; enc=1UeyOeN0l7Fkx0yPu7l6BuiPkT%2BdSxE0EqUM26jcSMdi1LtYaZbjQCMj5dKU3P0qfGwJn8QqYXc6oJugH%2FhFRA%3D%3D; ali_ab=58.215.20.66.1516409089271.6; mt=ci%3D-1_1; cookie2=104f8fc9c13eb24c296768a50cabdd6e; _tb_token_=ee7e1e1e7dbe7; v=0",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64;` rv:47.0) Gecko/20100101 Firefox/47.0"
}
# 获得文章列表urls
def getUrls(url):

    # 发送请求
    resp = requests.request("GET", url, data=payload, headers=headers)
    #设置解码方式
    resp.encoding=resp.apparent_encoding
    #这里会用设置的解码方式解码
    html_source = resp.text
    # 正则表达式,取出网页中的url链接(一些寻找注入点的工具也是这么做出来的)
    urls = re.findall("https://[^>\";\']*\d",html_source)
    new_urls=[]
    #从我的博客里只获取有details的链接进行访问
    for url in urls:
        if 'xiaoyao' in url:
            if 'details' in url:
                if url not in new_urls:
                    new_urls.append(url)
    return new_urls

urls = getUrls("https://xiaoyao.blog.csdn.net/")
while True:
    for url in urls:
        requests.request("GET", url, data=payload, headers=headers)
        print(url, "Ok")
        time.sleep(5)
    time.sleep(30)

 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个用 Python 实现的最大流算法的示例代码,可以解决上述问题: ```python from collections import deque # 定义一个图类 class Graph: def __init__(self, n): self.adj = [[] for _ in range(n)] # 邻接矩阵 self.n = n # 节点个数 # 添加一条边 def add_edge(self, u, v, w): self.adj[u].append((v, w)) self.adj[v].append((u, 0)) # 反向边容量为 0 # BFS 搜索增广路 def bfs(self, s, t, parent): visited = [False] * self.n # 记录节点是否访问过 visited[s] = True parent[s] = -1 queue = deque() queue.append(s) while queue: u = queue.popleft() for v, w in self.adj[u]: if not visited[v] and w > 0: visited[v] = True parent[v] = u queue.append(v) return visited[t] # 是否能够到达汇点 # 计算最大流 def max_flow(self, s, t): parent = [-1] * self.n # 记录节点的前驱节点 max_flow = 0 while self.bfs(s, t, parent): path_flow = float("inf") v = t # 找到一条增广路,计算路径上的最小容量 while v != s: u = parent[v] for nv, nw in self.adj[u]: if nv == v: path_flow = min(path_flow, nw) break v = u # 更新残量图 v = t while v != s: u = parent[v] for i, (nv, nw) in enumerate(self.adj[u]): if nv == v: self.adj[u][i] = (nv, nw - path_flow) break for i, (nv, nw) in enumerate(self.adj[v]): if nv == u: self.adj[v][i] = (nv, nw + path_flow) break v = u max_flow += path_flow return max_flow # 解决问题的函数 def solve(n, m, p, q, edges): g = Graph(n * 2 + 2) # 添加男生之间的边 for i in range(1, n + 1): g.add_edge(0, i * 2 - 1, 1) # 添加女生之间的边 for i in range(n + 1, n + m + 1): g.add_edge(i * 2 - 1, g.n - 1, 1) # 添加朋友之间的边 for x, y in edges: if x > 0 and y > 0: # 男生之间的朋友关系 g.add_edge(x * 2 - 1, y * 2 - 1, 1) elif x < 0 and y < 0: # 女生之间的朋友关系 g.add_edge(-x * 2, -y * 2, 1) else: # 男女之间的朋友关系 if x < 0: x, y = y, x g.add_edge(x * 2 - 1, -y * 2, 1) # 添加小明和小红的边 for i in range(1, n + 1): g.add_edge(1, i * 2, 1) for i in range(n + 1, n + m + 1): g.add_edge(i * 2 - 1, -1, 1) return g.max_flow(0, g.n - 1) # 测试 n = 3 m = 3 p = 3 q = 2 edges = [(1,2),(2,-1),(3,-1),(4,5),(5,-1)] assert solve(n, m, p, q, edges) == 3 ``` 这个程序的时间复杂度为 $O(V^2 E)$,其中 $V$ 表示节点数,$E$ 表示边数。在实际应用中可能会有更快的算法,但是这个算法已经足够解决本问题了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值