问题:

新建了一个docker-compose.yaml配置,然后启动服务,发现连不上mysql
报错:Access denied for user

分析:

  1. docker-compose.yaml配置如下:

    version: "3.9"
    services:
    mysql:
    image: mysql:5.7
    container_name: mysql
    command: --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4 
      --collation-server=utf8mb4_unicode_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --max_allowed_packet=128M
      --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
    environment:
      - MYSQL_ROOT_PASSWORD=1234$56
    restart: always
    ports:
      - "13306:3306"
    volumes:
      - mysql-data:/var/lib/mysql
      - mysql-conf:/etc/mysql/conf.d
    
    adminer:
    image: adminer
    container_name: adminer
    restart: always
    ports:
      - 18080:8080
    depends_on:
      - mysql
    volumes:
    mysql-data: {}
    mysql-conf: {}
  2. 进入mysql容器,docker exec -it mysql /bin/bash,env查看MYSQL_ROOT_PASSWORD的变量值,发现是MYSQL_ROOT_PASSWORD=1234
  3. 故障点定位到,environment的MYSQL_ROOT_PASSWORD这种赋值方式异常

解决办法或者注意事项:

  1. 查看官网关于环境变量定义的标准用法
    https://docs.docker.com/compose/compose-file/compose-file-v3/#environment
    https://stackoverflow.com/questions/40619582/how-can-i-escape-a-dollar-sign-in-a-docker-compose-file
  2. 修正docker-compose.yaml配置

    version: "3.9"
    services:
    mysql:
    image: mysql:5.7
    container_name: mysql
    command: --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4 
      --collation-server=utf8mb4_unicode_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --max_allowed_packet=128M
      --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
    environment:
      - MYSQL_ROOT_PASSWORD=1234$$56
    restart: always
    ports:
      - "13306:3306"
    volumes:
      - mysql-data:/var/lib/mysql
      - mysql-conf:/etc/mysql/conf.d
    
    adminer:
    image: adminer
    container_name: adminer
    restart: always
    ports:
      - 18080:8080
    depends_on:
      - mysql
    volumes:
    mysql-data: {}
    mysql-conf: {}
  3. 登录mysql容器,env校验参数成功

目的

不登录,爬取tuniu网站部分页面数据

问题

python操作selenium,直接打开具体页面,页面为空,无内容

无内容原因:

  1. tuniu 采用了阿里云的前端安全验证 https://g.alicdn.com/sd/ncpc/nc.js
  2. cookie 关键值是 acw_sc__v3

解决办法:

  1. 使用未被收录特征的工具 利用google浏览器 打开 tuniu 首页
  2. 使用未被收录特征的工具 利用google浏览器 通过 tuniu 首页的h5的拖拽验证码 的验证,则此时浏览器会缓存一定有效期的 acw_sc__v3 cookie
  3. 在cookie默认有效期内,执行selenium相关代码(options.add_argument(user_data_dir)),这样selenium就不会被要求安全验证了。

nodejs debug 设定程序执行起始根路径cwd

launch.json

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "pwa-node",
            "request": "launch",
            "name": "Launch Program",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "program": "${workspaceFolder}\\cus_jd_scripts\\js\\jd_cash.js",
            "cwd": "${workspaceFolder}\\cus_jd_scripts\\js\\",
        }
    ]
}

  1. 截止目前最新win11版本号(21h2 22000.527)
  2. 浏览器打开https://store.rg-adguard.net
    下拉框和文本框分别选择和输入——ProductID,9P3395VX91N,Slow;最后点击“√”查询按钮


    或者云盘下载: https://pan.baidu.com/s/19YD4MxGGJkSEhGaU_SELPQ?pwd=wn24 提取码: wn24

  3. 查询结果中
    下载最后一个名为“MicrosoftCorporationII.WindowsSubsystemForAndroid_1.8.32837.0_neutral_~_8wekyb3d8bbwe.msixbundle”的文件

  4. 安装WSA
    D盘根目录下创建目录“D:\WSA”,并将上面下载的文件copy到本目录下,然后管理员身份运行windows程序“PowerShell”,最后执行进入目录和安装命令

    d:
    cd D:\WSA
    Add-AppxPackage MicrosoftCorporationII.WindowsSubsystemForAndroid_1.8.32837.0_neutral___8wekyb3d8bbwe.Msixbundle

  5. 启动WSA,并开启开发者模式,从而允许安装非Amazon Appstore的应用,(同时记住wsa服务的IP地址)
  6. windows下安装adb工具,或者通过windows store应用商店安装-“Apk文件安装程序”
  7. 通过adb命令给windows安卓子系统,安装自定义的安卓app应用,比如douyin,cmd执行以下命令:
    cd 相应文件目录
    # adb连接was服务
    adb connect 172.22.137.166
    # adb安装自定义应用到安卓子系统
    adb install aweme_douyin-huidu-gw-huidu-220209_v1019_190500_4c20_1644405940.apk

  8. 启动Android应用。
    点击“开始”按钮——点击所有应用——点击刚刚安装抖音apk-启动(大功告成)


  9. 卸载和删除Android应用
    开始按钮-所有应用-右键刚刚安装的Android应用——选择卸载