tengke 发表于 2024-3-19 17:45:41

python爬虫

http://域名/bit-msa-sso/common/v1/auth/generator/token/06864952B6784D7593BB4E6FAC463494?time=1710837811473
这个链接从06864952B6784D7593BB4E6FAC463494?time=1710837811473这里就是随机的 我应该怎么获取这个验证码
time这个时间我可以弄出来06864952B6784D7593BB4E6FAC463494这个怎么获取呢

FishC 发表于 2024-3-19 17:45:42

tengke 发表于 2024-03-19 17:53
但是这个是服务器发送给我的   我如果使用这个地址的 ...

如果这个链接是服务器发送给你的,那么你不需要自己生成验证码。你只需要从链接中获取验证码部分即可。

你可以使用Python中的`urllib.parse`模块中的`parse_qs`函数来解析URL中的参数,然后获取验证码部分。以下是一个示例代码:

from urllib.parse import parse_qs

url = "http://域名/bit-msa-sso/common/v1/auth/generator/token/06864952B6784D7593BB4E6FAC463494?time=1710837811473"
params = parse_qs(url.split("?"))
code = params["token"]
time = params["time"]

print(f"验证码:{code}")
print(f"时间戳:{time}")

该代码将URL按照问号进行切割,得到参数部分,然后使用`parse_qs`函数解析参数,获取验证码和时间戳。

注意,这里假设验证码参数名为"token",时间戳参数名为"time"。如果实际情况不同,需要根据实际情况修改参数名字。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

FishC 发表于 2024-3-19 17:45:57

你可以使用Python中的`random`库来生成一个随机的字符串,作为验证码的一部分。以下是一个简单的示例代码:

import random
import string

def generate_code(length):
    code = ''.join(random.choices(string.ascii_uppercase + string.digits, k=length))
    return code

time = 1710837811473
code = generate_code(16)
url = f"http://域名/bit-msa-sso/common/v1/auth/generator/token/{code}?time={time}"

print(f"验证码:{code}")
print(f"链接:{url}")

该代码中,`generate_code`函数使用`random.choices`函数从大小写字母和数字中随机选择字符,选取长度为`length`的字符构成验证码。然后,将验证码和时间拼接到链接中。

你可以根据实际需要调整验证码的长度。注意,生成的验证码并不是真正的随机数,但对于大部分场景已经足够。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

tengke 发表于 2024-3-19 17:53:37

但是这个是服务器发送给我的   我如果使用这个地址的验证码并且输入了验证码会提示验证码不对吗

tengke 发表于 2024-3-19 17:56:07

但是我爬虫需要自动登陆的功能这个验证码链接 token后面的部分是随机的并不是固定的

FishC 发表于 2024-3-19 17:56:43

tengke 发表于 2024-03-19 17:56
但是我爬虫需要自动登陆的功能这个验证码链接 token ...

如果验证码的链接是随机生成的,并且每次请求时都会变化,那么你可以使用爬虫程序在每次请求时动态获取验证码并自动提交给服务器进行登录。以下是一个简单的示例代码:

import requests
from bs4 import BeautifulSoup

# 爬取验证码链接
def get_captcha_url():
    # 发送请求,获取页面内容
    url = "http://域名/bit-msa-sso/common/v1/auth/generator/token"
    response = requests.get(url)
    soup = BeautifulSoup(response.text, "html.parser")
   
    # 解析页面,获取验证码链接
    captcha_elem = soup.find("img", class_="captcha-img")
    captcha_url = captcha_elem["src"]
   
    return captcha_url


# 下载验证码图片
def download_captcha(url):
    response = requests.get(url, stream=True)
    with open("captcha.png", "wb") as file:
      for chunk in response.iter_content(chunk_size=128):
            file.write(chunk)


# 处理验证码
def process_captcha():
    captcha_url = get_captcha_url()
    download_captcha(captcha_url)

    # 这里你可以使用第三方库处理验证码图片,例如:pytesseract、PIL等
    # 提取验证码的文本
   
    # 返回验证码文本
    captcha_text = "123456"
    return captcha_text


# 登录操作
def login(captcha_text):
    url = "http://域名/bit-msa-sso/common/v1/auth/login"
    data = {
      "username": "your_username",
      "password": "your_password",
      "captcha": captcha_text
    }
    response = requests.post(url, data=data)
   
    # 处理登录结果
    if response.status_code == 200:
      print("登录成功")
    else:
      print("登录失败")


# 主函数
def main():
    captcha_text = process_captcha()
    login(captcha_text)


if __name__ == "__main__":
    main()

在上述代码中,`get_captcha_url`函数发送请求获取验证码链接。然后,`download_captcha`函数下载验证码图片。你可以使用第三方库处理验证码图片,例如使用Pytesseract识别验证码文本。最后,将验证码文本提交给服务器进行登录操作。

请注意,这仅是一个示例代码,实际情况可能因为网站的防爬措施而有所不同。在实际应用中,可能需要进一步处理验证码、处理请求的Cookie等。另外,一些网站可能禁止自动化登录,你需要在遵守网站规定的前提下使用爬虫程序。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

快速收敛 发表于 2024-3-20 10:40:10

抓包,抓包

wp231957 发表于 2024-3-20 11:34:32

tengke 发表于 2024-3-19 17:53
但是这个是服务器发送给我的   我如果使用这个地址的验证码并且输入了验证码会提示验证码不对吗

都是有算法的 你需要把它的算法分析出来或者扒出来
AI提供的代码 你就可以呵呵了它是不会抓包的
页: [1]
查看完整版本: python爬虫