8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

‘TwoCaptcha’ 对象没有属性 ‘normal’

Howcanoe Wang 2月前

111 0

我正在做一个项目,想在其中集成一个绕过验证码的功能。我一直在为此使用 2captcha 服务,而且它一直很成功,直到我从 Windows 切换到 Linux(Ubu...

我正在开发一个项目,想要集成一个验证码绕过功能。我一直在为此使用 2captcha 服务,在我从 Windows 切换到 Linux(Ubuntu 22.04)之前,它一直很成功。当 我尝试运行此功能时,我不断 “TwoCaptcha”对象没有属性“normal”

def solve_captcha(image_path):
    solver = TwoCaptcha(api_key)
    try:
        result = solver.normal(image_path)
    except Exception as e:
        logging.error(e)
    else:
        return result['code']

问题是,我在两个系统上安装了相同的库版本。转换后,我没有更改上述函数代码中的任何内容,官方文档在其示例中包含了该属性。

有人能帮助我理解这个问题吗?

我尝试搜索:库文档( https://pypi.org/project/2captcha-python/ )以及官方服务网页上的示例( https://2captcha.com/api-docs/normal-captcha ),但它们的代码中都包含“正常”属性。

帖子版权声明 1、本帖标题:‘TwoCaptcha’ 对象没有属性 ‘normal’
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Howcanoe Wang在本站《ubuntu》版块原创发布, 转载请注明出处!
最新回复 (0)
  • # 日期时间库从 datetime 导入 datetime从 geopy.geocoders 导入 Nominatim从 tzwhere 导入 tzwhere从 pytz 导入时区,utc# matplotlib 帮助显示我们的星图导入

    # datetime libraries
    from datetime import datetime
    from geopy.geocoders import Nominatim
    from tzwhere import tzwhere
    from pytz import timezone, utc
    
    # matplotlib to help display our star map
    import matplotlib.pyplot as plt
    # skyfield for star data 
    from skyfield.api import Star, load, wgs84
    from skyfield.data import hipparcos
    from skyfield.projections import build_stereographic_projection
    
    # de421 shows position of earth and sun in space
    eph = load('de421.bsp')
    # hipparcos dataset contains star location data
    with load.open(hipparcos.URL) as f:
    stars = hipparcos.load_dataframe(f)
    location = 'Times Square, New York, NY'
    when = '2023-01-01 00:00'
    
    locator = Nominatim(user_agent='myGeocoder')
    location = locator.geocode(location)
    lat, long = location.latitude, location.longitude code here
     # convert date string into datetime object
     dt = datetime.strptime(when, '%Y-%m-%d %H:%M')
     import pytz
     from pytz import timezone, utc
     # define datetime and convert to utc based on our timezone
     #def timezone(lat, long, dt):
     tzw = tzwhere.tzwhere()
     timezone_str = tzw.tzNameAt(latitude, longitude)
     local = pytz.timezone(timezone_str)
     #tzw = tzwhere.tzwhere()
     #timezone_str = tzw.tzNameAt(lat, long)
     #local = pytz.local(timezone_str)
    
    # get UTC from local timezone and datetime
    #dt = datetime.strptime(when, '%Y-%m-%d %H:%M')
    local_dt = local.localize(dt, is_dst=None)
    utc_dt = local_dt.astimezone(utc)
    print(utc_dt)  '
    

    上述代码给出了这个错误。

    ValueError:设置带有序列的数组元素。请求的数组在 2 个维度之后具有不均匀形状。检测到的形状为 (1, 2) + 不均匀部分。

    错误出现在 tzw = tzwhere.tzwhere() 行

    我该如何纠正这个问题?

  • 我有 UTC 时区的日期时间,我想将其转换为 %Y-%M-%DT%h:%m:%.3sZ 格式的时间戳字符串。因此它应该在末尾有军用时区。我能想到的唯一方法是...

    我有带有 UTC 时区的日期时间,我想将其转换为格式的时间戳字符串 %Y-%M-%DT%h:%m:%.3sZ 。因此它应该在末尾有军事时区。

    我能想到的唯一办法就是这个:

    >>> from datetime import datetime, timezone
    >>> datetime.now(timezone.utc).isoformat(timespec="milliseconds").replace('+00:00', 'Z')
    '2024-03-18T12:20:53.190Z'
    

    但有没有更好的方法来做到这一点?

  • 我正在尝试使用 HttpClient [Test, Explicit] public async Task ImportSymbolsTestAsync() { var url = \'https://nsearchives.nseindia.com/content/equities/EQUITY_L... 读取 csv

    我正在尝试使用 HttpClient 读取 csv

        [Test, Explicit]
        public async Task ImportSymbolsTestAsync()
        {
            var url = "https://nsearchives.nseindia.com/content/equities/EQUITY_L.csv";
            ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls13 | SecurityProtocolType.Tls12;
            var response = await new HttpClient().GetAsync(url);
            response.EnsureSuccessStatusCode();
        }
    

    但出现错误

    消息:System.Net.Http.HttpRequestException:发送请求时发生错误。----> System.IO.IOException:无法从传输连接读取数据:远程主机强制关闭现有连接。----> System.Net.Sockets.SocketException:远程主机强制关闭现有连接。

    堆栈跟踪:HttpConnection.SendAsync(HttpRequestMessage request,Boolean async, CancellationToken cancellationToken)HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessagerequest, Boolean async, Boolean doRequestAuth, CancellationTokencancellationToken) RedirectHandler.SendAsync(HttpRequestMessagerequest, Boolean async, CancellationToken cancellationToken)

    如果我尝试使用 执行相同的操作 postman ,则它会起作用。可能是什么问题?

  • MS Graph(Outlook)列出消息“ReceivedDateTime GT”运算符失败了 1 秒!如果将 1 秒添加到所需的“ReceivedDateTime”,您将收到精确包含“ReceivedDateT”的电子邮件...

    MS Graph(Outlook)列出消息“ReceivedDateTime GT”运算符失败了 1 秒!

    如果在所需的“ReceivedDateTime”上添加 1 秒,您将收到精确等于“ReceivedDateTime”或更大的电子邮件。

    如果您指定精确的“ReceivedDateTime”,即只想列出“大于”的邮件,它也会返回具有相同的“EQ”——“ReceivedDateTime”的邮件。

    请修复这个 GT 操作员 MS,你可以想象它今天造成了多大的混乱。

    问候,卡梅伦

    我试过: https://graph.microsoft.com/v1.0/users/ /消息$过滤器=ReceivedDateTime GT 2024-01-01T01:01:01Z

    我收到:'ReceivedDateTime' 等于 2024-01-01T01:01:01Z(且更大)的电子邮件

  • 我正在处理一个使用 Highstock.js v2.1.9 的旧版 Web 应用程序,以可视化股票图表中的时间序列数据。我面临的问题是日期时间值会根据使用情况进行调整...

    我正在处理一个 用于 股票图表 Highstock.js v2.1.9 中的时间序列数据的 旧版 Web 应用程序 。我面临的问题是, 日期时间 值会根据用户的桌面 时区 设置进行调整。例如,在 Windows 系统上,更改设置中的时区会导致所有图表时间值 变化

    我们 根据用户的 UTC 偏移量 服务器端 日期时间 值的调整 。因此,我们希望防止 Highstock 根据客户端时区修改我们的数据。考虑到 的年限 v2.1.9 ,我很难找到相关的 API 文档 。我尝试过 useUTC timezone ,但它们似乎无法无论客户端如何都能保持我们的数据不变 timezones .

    总之,我该如何配置 Highstock v2.1.9 以避免根据客户端的修改我们的日期时间值 timezone

  • 我正在使用来自这个 kaggle 的干净数据集,用于一个学校项目,我必须用 c++ 编写代码来对数据进行排序,并允许我对数据进行统计分析。https://www.kaggle.com/dat...

    我正在使用来自这个 kaggle 的干净数据集,用于一个学校项目,我必须用 c++ 编写代码来对数据进行排序并允许我对数据进行统计分析。

    https://www.kaggle.com/datasets/elvinrustam/ebay-laptops-and-netbooks-sales/data

    我尝试了很多次,但似乎还是搞不清楚如何使用 c++ 忽略数据中的逗号和随机引号。我尝试将每个标题的数据存储到一个向量中,以便之后可以对数据进行操作,但当我打印数据时,我发现数据集中混杂了其他数据,还有随机逗号、括号、长文本等。

    #include <iostream>
    #include <fstream>
    #include <sstream>
    #include <vector>
    #include <string>
    #include <set>
    
    std::vector<std::string> parseCSVLine(const std::string& line) {
        std::vector<std::string> result;
        std::string cell;
        bool inQuotes = false;
        bool inBulletPoint = false; // New flag to track when we're within a bullet point
        for (auto it = line.begin(); it != line.end(); ++it) {
            const char nextChar = *it;
    
            // Check for bullet points
            if (!inQuotes && *it == '•') {
                inBulletPoint = true; // We're now inside a bullet point
                cell += nextChar; // Add the bullet point character to the cell
                continue;
            }
    
            // If we're in a bullet point, check for the end of the line or a comma (end of cell)
            if (inBulletPoint && (nextChar == ',' || it == line.end() - 1)) {
                inBulletPoint = false; // Exiting bullet point mode
                if (nextChar != ',') {
                    cell += nextChar; // Ensure last character is included if not a comma
                }
                result.push_back(cell);
                cell.clear();
                continue;
            }
            else if (inBulletPoint) {
                // Simply add the character to the cell without interpreting it
                cell += nextChar;
                continue;
            }
    
            // Handle quotes (outside of bullet points)
            if (nextChar == '"') {
                if (inQuotes && (it + 1 != line.end()) && (*(it + 1) == '"')) {
                    cell += nextChar; // Add a single quote to the cell value
                    ++it; // Skip the next quote
                }
                else {
                    inQuotes = !inQuotes;
                }
            }
            else if (nextChar == ',' && !inQuotes) {
                result.push_back(cell);
                cell.clear();
            }
            else {
                cell += nextChar;
            }
        }
        // Only check the last character if the line is not empty
        if (!cell.empty() || (!line.empty() && line.back() == ',')) {
            result.push_back(cell);
        }
    
    
        return result;
    }
    
    int main() {
        std::string filePath = "insert file path here";
        std::ifstream file(filePath);
        if (!file.is_open()) {
            std::cerr << "Failed to open file: " << filePath << std::endl;
            return 1;
        }
    
        std::string line;
        std::vector<std::string> headers;
        std::vector<std::vector<std::string>> columnData;
    
        if (getline(file, line)) {
            headers = parseCSVLine(line);
            columnData.resize(headers.size());
        }
    
        while (getline(file, line)) {
            auto data = parseCSVLine(line);
            for (size_t i = 0; i < data.size() && i < columnData.size(); ++i) {
                columnData[i].push_back(data[i]);
            }
        }
    
        file.close();
    
        //// Example output: Printing unique values for each heading for verification
        //for (size_t i = 0; i < headers.size(); ++i) {
        //    std::set<std::string> uniqueValues(columnData[i].begin(), columnData[i].end());
        //    std::cout << "Heading: " << headers[i] << " - Unique Values: " << uniqueValues.size() << std::endl;
        //    for (const auto& value : uniqueValues) {
        //        std::cout << value << std::endl;
        //    }
        //    std::cout << std::endl;
        //}
    
    
        // Make sure to define and fill 'columnData' and 'headers' as per your CSV parsing logic before this snippet
    
        // Here, the index is set to 2 since vector indices are 0-based and we want the third column (heading 3)
        size_t index = 2;
    
        // Check if the index is within the bounds of the 'columnData' vector
        if (index < columnData.size()) {
            std::cout << "Values under Heading 3 (" << headers[index] << "):" << std::endl;
    
            // Iterate over the vector at the given index and print each value
            for (const auto& value : columnData[index]) {
                std::cout << value << std::endl;
            }
        }
        else {
            std::cerr << "Index out of range. The columnData does not have a heading 3." << std::endl;
        }
    
        return 0;
    }
    
  • 我在 Windows 机器上本地运行一个 .net core API 项目,本地时间是 utc +3。在请求返回的响应头中,结果是按照 utc + 0 返回的。这次

    我在 Windows 机器上本地运行一个 .net core API 项目,本地时间是 utc +3。在请求返回的响应头中,结果是按照 utc + 0 返回的。

    这个时间差异导致我在验证我的 jwt 令牌时出现错误,我永远无法验证它们。

    例如:

    当地时间:15:45:51
    (kestrel).net 时间:12:45:51

    我尝试了 TimeZoneInfo,但没有用。当我在指定令牌持续时间时提供 UTCnow 时,通过查看时差来进行交易对我来说毫无意义。我想在自己的时区查看和跟踪这些交易。

    是否可以将.net 中的系统时间与我的本地时间匹配?

    更新:

    在此处输入图片描述

    即使我使用 datetime.now 设置了到期日期,它也会接收值 utcnow 作为日期,并且根据该期限它永远不会有效。

    我的活动时间是 16:24

    var minute = Convert.ToInt32(_configuration["JwtSettings:ExpirationInMinutes"]);
                token.Expiration = DateTime.Now.AddMinutes(minute);
    
                JwtSecurityToken securityToken = new(
                    audience: _configuration["JwtSettings:Audience"],
                    issuer: _configuration["JwtSettings:Issuer"],
                    expires: token.Expiration,
                    notBefore: DateTime.Now,
                    signingCredentials: signingCredentials
                    );
    

    如果我使用 UtcNow 确定此处的日期,它可以正常工作,但与当地时间有差异,但是它如何以及为什么能够将我提供的 Datetime.Now 值转换为它自己的 UtcNow?

  • JMG 2月前 0 只看Ta
    引用 9

    你好,抱歉,tzw = tzwhere.tzwhere() 这是导致错误的原因。

  • flow 2月前 0 只看Ta
    引用 10

    哪种方式更好?:) 据我所知,datetime.strftime 函数对 ms 没有方便的支持。你可以这样做

  • 确保您 正确 HttpClient 使用 :

    private static readonly HttpClient _Client = new HttpClient();
    
    static MyTestClass()
    {
        ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls13 | SecurityProtocolType.Tls12;
    }
    
    [Test, Explicit]
    public async Task ImportSymbolsTestAsync()
    {
        var url = "https://nsearchives.nseindia.com/content/equities/EQUITY_L.csv";
        using (var response = await _Client.GetAsync(url))
        {
            response.EnsureSuccessStatusCode();
        }
    }
    
  • 检查 Postman 发送的 http 标头,并尝试调试并查看请求的 http 标头以查看是否存在任何差异。另一种可能性是 nsearchives.nseindia.com 不支持 tls 版本。在代码中,您指示 tle 1.3 或 1.2,不确定 Postman 在其端做了什么。

  • 为了简化答案,假设。

    1. 没有转义字符。
    2. 代码仅使用双引号 (\')
    3. 双引号是单元格中的第一个字符和最后一个字符。
      => open 是行上的第一个字符或逗号后的第一个字符。
      => 关闭是该行的最后一个字符或紧接着的逗号。
    4. 并非所有单元格都使用引号,但所有带有逗号的单元格都使用引号。

    快速扫描 OA 输入数据似乎表明这些因素成立。但如果数据发生变化,您将需要重新验证。

    注意:扫描通用 CSV 文件时,这些条件可能不成立,因此您应该使用真正的解析器。但具有这些条件的良好 CSV 文件应该足够了。


    我会把这个问题分成两个问题。

    1. 扫描一条线
    2. 扫描一个值(单元格)。

    因此我会这样做:

    注意:未经代码审查,因此可能存在一些错误。请通过测试进行验证。

    #include <vector>
    #include <iostream>
    #include <fstream>
    #include <sstream>
    
    struct Value
    {
        std::string     value;
        friend std::ostream& operator<<(std::ostream& s, Value const& data)
        {
            s << data.value;
            return s;
        }
        friend std::istream& operator>>(std::istream& s, Value& data)
        {
            // assumes cell ends with a ',' or eof
            // Will remove the trailing ',' from the stream but not include it in the data
            // If cell is quoted (") then removes quotes does not add them to the data.
            // Assumes quotes are first and last character in cell.
    
            char peek = s.peek();
            if (peek != '"') {
                std::getline(s, data.value, ',');   // drops trailing comma
            }
            else {
                char get1 = s.get();                // gets leading quote
                std::getline(s, data.value, '"');  // drops tailing quote
                char get2 = s.get();                // gets trailing comma
            }
            return s;
        }
    };
    struct Line
    {
        std::vector<Value>        values;
        friend std::ostream& operator<<(std::ostream& s, Line const& data)
        {
            for (auto const& v: data.values) {
                s << v << ",";
            }
            return s;
        }
        friend std::istream& operator>>(std::istream& s, Line& data)
        {
            // assumes we can get a line of data with std::getline
            // All the data is in chunks of Value.
    
            std::string line;
            if (std::getline(s, line)) {
    
                std::stringstream   lineStream(std::move(line));
                std::vector<Value>  tmp{std::istream_iterator<Value>{lineStream}, std::istream_iterator<Value>{}};
                data.values = std::move(tmp);
            }
            return s;
        }
    };
    
    int main()
    {
        std::ifstream   csv("EbayPcLaptopsAndNetbooksUnclean.csv");
    
        Line    line;
        int     count = 0;
        int     lineSizeCount[1000] = {0};
        while(csv >> line) {
            ++count;
            ++lineSizeCount[line.values.size()];
        }
        std::cout << "Lines: " << count << "\n";
        for (int loop = 0; loop < 1000; ++loop) {
            if (lineSizeCount[loop] != 0) {
                std::cout << "  Size: " << loop << " => " << lineSizeCount[loop] << "\n";
            }
        }
    }
    
  • 在这种情况下,您可以尝试使用 getTimezoneOffset() 方法,该方法根据时间戳和给定的时区返回 timezoneOffset。此方法需要包含 moment.js 库。演示:https://jsfiddle.net/BlackLabel/8o1ntu4v/ 参考:https://github.com/highcharts/highcharts/blob/4dcfd548931e9fa5578530cf372bc2ed42162fd5/samples/highcharts/global/gettimezoneoffset/demo.js

  • CSV 并不像大多数人想象的那么简单。只要在值中嵌入逗号,就需要使用真正的解析器。仅使用 iostream 原语是不够的。如果可以,请使用库。如果您不能,并且只需要处理引号和可能潜伏在引号之间的讨厌的东西,那么状态机(具有两种状态:收集引号和正常读取)可能就足够了。

  • M.Ob 2月前 0 只看Ta
    引用 16

    谢谢,我确实将 global.useUTC 设置为 false,但我的应用程序似乎仍会根据系统时区更改 x 轴值。我知道这是客户端的,因为此更改无需刷新页面即可发生。可能是其他属性导致了这种情况?

  • 文件中有什么?你的代码输出了什么?应该输出什么?你能读取并解析一行而没有错误吗?

  • Outlook 根据指定的时间格式评估时间,不包含秒数。

    Outlook UI 和 Outlook 对象模型都共享相同的代码,强制截断到最接近的分钟,您对此无能为力。

  • 为了使其正常工作,您可以将选项设置 global.useUTC false ,并且日期时间戳不应根据用户时区而改变。

    演示: https://jsfiddle.net/BlackLabel/6xfz3chr/

    参考: https://github.com/highcharts/highcharts/blob/4dcfd548931e9fa5578530cf372bc2ed42162fd5/js/parts/Options.js#L21-L26

  • 您是在寻求帮助对数据进行排序,还是只是需要正确读取数据?您可能会在这里找到一些有助于读取数据的内容

返回
作者最近主题: