鱼C论坛

 找回密码
 立即注册
查看: 905|回复: 7

[已解决]python爬虫

[复制链接]
发表于 2024-3-19 17:45:41 | 显示全部楼层 |阅读模式
4鱼币
http://域名/bit-msa-sso/common/v1/auth/generator/token/06864952B6784D7593BB4E6FAC463494?time=1710837811473
这个链接从06864952B6784D7593BB4E6FAC463494?time=1710837811473这里就是随机的 我应该怎么获取这个验证码
time这个时间我可以弄出来  06864952B6784D7593BB4E6FAC463494这个怎么获取呢
最佳答案
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("?")[1])
code = params["token"][0]
time = params["time"][0]

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

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

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

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

最佳答案

查看完整内容

如果这个链接是服务器发送给你的,那么你不需要自己生成验证码。你只需要从链接中获取验证码部分即可。 你可以使用Python中的`urllib.parse`模块中的`parse_qs`函数来解析URL中的参数,然后获取验证码部分。以下是一个示例代码: 该代码将URL按照问号进行切割,得到参数部分,然后使用`parse_qs`函数解析参数,获取验证码和时间戳。 注意,这里假设验证码参数名为"token",时间戳参数名为"time"。如果实际情况不 ...

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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("?")[1])
code = params["token"][0]
time = params["time"][0]

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

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-3-19 17:53:37 | 显示全部楼层
但是这个是服务器发送给我的   我如果使用这个地址的验证码并且输入了验证码  会提示验证码不对吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-3-19 17:56:07 | 显示全部楼层
但是我爬虫需要自动登陆的功能  这个验证码链接 token后面的部分是随机的并不是固定的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-20 10:40:10 | 显示全部楼层
抓包,抓包
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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


都是有算法的 你需要把它的算法分析出来  或者扒出来
AI提供的代码 你就可以呵呵了  它是不会抓包的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 10:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表