九零不老心 发布的文章

启用远程桌面

安装RDPWrap(自行github搜索、安装,不仅支持win7、8、10也支持win11,而且不限制同时远程的用户数量),注意修改rdpwrap.ini,用来支持新版本的系统

win10 or win11 家庭版启用query命令(思路,还未实际实现)

  1. 从其他的专业版的C:\Windows\System32\query.exe 复制 覆盖到相同位置下的 家庭版的文件,win11的query文件可以从这里下载:链接: https://pan.baidu.com/s/1SbvjTcSfK4nSVFCgw8mC8g?pwd=5uk7 提取码: 5uk7
  2. 家庭版注册表添加HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Utilities\query,Terminal Server下面新建层级关系的Utilities\query项即可
  3. cmd,执行命令query查看命令是否正常可用

远程桌面如何关闭后仍然支持自动化软件的渲染

  1. 新建close.bat内容如下
for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
%windir%\System32\tscon.exe %%s /dest:console)
pause
  1. 关闭远程桌面的时候,右键以管理员身份运行该bat实现即可,这样自动化渲染工具仍然能够自动化渲染

问题:

新建了一个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就不会被要求安全验证了。