Joyber 发布的文章

实战经验是通过Jenkins集成ansible插件做项目代码发布,以下是当时的playbook脚本

jenkins 执行的ansible执行类似:

/usr/bin/ansible-playbook /etc/ansible/playbook/deploy.houtai.yml -l houtai -f 5 --private-key /tmp/ssh11525745722860273680.key -u root -e srcdir=/var/lib/jenkins/workspace/www.com/ -e destdir=/web/www/ -e opts=--exclude-from=/etc/ansible/playbook/deploy.exclude --become-user root

deploy.houtai.yml 后台网站发布

- hosts: test,online
  remote_user: root
  tasks:
          - name: deploy code to remote server
            synchronize:
                    src: '{{ srcdir }}'
                    dest: '{{ destdir }}'
                    mode: push
                    dirs: yes
                    owner: no
                    group: no
                    copy_links: no
                    delete: no
                    rsync_opts: '{{ opts | default("") }}'

          - name: copy files if not existing, and delete extraneous files
            synchronize:
                    src: '{{ srcdir }}/{{ item }}'
                    dest: '{{ destdir }}/{{ item }}'
                    mode: push
                    dirs: yes
                    owner: no
                    group: no
                    copy_links: no
                    delete: yes
                    rsync_opts: '--ignore-existing'
            with_items:
                    - common/coreCss/
                    - common/coreJs/
                    - common/css/
                    - common/js/
            ignore_errors: true
                    
          - name: change files mode
            file:
                path: '{{ destdir }}/{{ item.0 }}'
                mode: '{{ item.1 }}'
            with_list:
                    - ['protected/yiic', '0755']
            ignore_errors: true

          - name: opcache_reset
            shell: /usr/bin/php -r 'opcache_reset();'
            ignore_errors: true

deploy.yml 用户网站发布

- hosts: test,online
  remote_user: root
  tasks:
          - name: deploy code to remote server
            synchronize:
                    src: '{{ srcdir }}'
                    dest: '{{ destdir }}'
                    mode: push
                    dirs: yes
                    owner: no
                    group: no
                    copy_links: no
                    delete: no
                    rsync_opts: '{{ opts | default("") }}'

          - name: copy files if not existing, and delete extraneous files
            synchronize:
                    src: '{{ srcdir }}/{{ item }}'
                    dest: '{{ destdir }}/{{ item }}'
                    mode: push
                    dirs: yes
                    owner: no
                    group: no
                    copy_links: no
                    delete: yes
                    rsync_opts:
                           - '--ignore-existing'
            with_items:
                    - common/coreCss/
                    - common/coreJs/
                    - common/css/
                    - common/js/
                    - pay/alipayMobile/alipay.config.php
                    - pay/alipayPC/alipay.config.php
                    - pay/singleTradeQuery/alipay.config.php
                    - wxpay/lib/WxPay.Config.php
            ignore_errors: true
                    
          - name: change files mode
            file:
                path: '{{ destdir }}/{{ item.0 }}'
                mode: '{{ item.1 }}'
            with_list:
                    - ['protected/yiic', '0755']
            ignore_errors: true

deploy.exclude 用于rsync同步文件时的忽略文件列表

.git
.idea
.user.ini
lextab.py
yacctab.py
/assets
/attachments
/uploads
node_modules
/protected/runtime
pay/alipayMobile/alipay.config.php
pay/alipayPC/alipay.config.php
pay/singleTradeQuery/alipay.config.php
#wxpay/lib/WxPay.Config.php

首先说明一点:cookie在不同域名之间是无法共享的,即跨域问题!但是在顶级域名、二级域名、三级域名中是可以共享的!

总结
在setcookie中省略domain参数,那么domain默认为当前域名
domain参数可以设置父域名以及自身,但不能设置其它域名,包括子域名,否则cookie不起作用
如果cookie设置为顶级域名,则全部的域名,包括顶级域名、二级域名、三级域名等,都可以共享该cookie
如果cokkie设置为当前域名,则当前域名及其下面的所有子域名可以共享该cookie

准备如下三个域名:

  • 顶级域名:dalomao.com
  • 二级域名:super.dalomao.com
  • 三级域名:big.super.dalomao.com

访问顶级域名
访问顶级域名 dalomao.com,设置如下四种情况的cookie

Y表示可以共享cookie,N表示无法共享

domain参数dalomao.comsuper.dalomao.combig.super.dalomao.com
YYY
dalomao.comYYY
super.dalomao.comNNN
big.super.dalomao.comNNN

访问二级域名
访问二级域名 super.dalomao.com,设置如下四种情况的cookie
Y表示可以共享cookie,N表示无法共享

domain参数dalomao.comsuper.dalomao.combig.super.dalomao.com
NYY
dalomao.comYYY
super.dalomao.comNYY
big.super.dalomao.comNNN

访问三级域名
访问三级域名 big.super.dalomao.com,设置如下四种情况的cookie
Y表示可以共享cookie,N表示无法共享

domain参数dalomao.comsuper.dalomao.combig.super.dalomao.com
NNY
dalomao.comYYY
super.dalomao.comNYY
big.super.dalomao.comNNY

首先肯定是win+x菜单打开【任务管理器】启动页,禁止自动启动。即使这样还是会的。

下面再介绍一下继续怎么设置:

1、找到WPS安装文件夹,打开,然后找到一个“office6”的文件夹并再次打开,如下图所示:
1.png

2、找到ksomisc.exe的配文件,双击打开,在弹出的“WPS Office综合修复/配置工具 ”界面中点击“高级”按钮。
2.png

3、在“WPS配置工具”界面中,点击“其他选项”将一系列的对钩全部给去掉。
3.png

4、点击“确定”按钮,退出界面。

5、即使这样做,在我们用wps打开文档时,后台还是会自启动wps热点,这时,通过Ctrl+Alt+delete启动任务管理器,在“进程”明细中可以看到wpscenter.exe这个程序。

6、我们还是打开“office6”文件夹,找到wpscenter.exe这个程序,然后点击鼠标右键选择,属性=> 安全=>设置此目录的访问权限为拒绝,最后确定关闭,就可以了。把Users的用户也设置成为拒绝。
4.png
5.png

7、应用=>确定。以后wps热点后台也不会运行了,因为没有wpscenter.exe这个程序的访问权限,不能更新,不能替换,也不能删除这个目录。

8、最后,双击进入wpscenter.exe这个程序,会弹出下图说明设置成功。
6.png

chromeOptions 添加选项: --disable-blink-features=AutomationControlled

$options = [
            '--no-sandbox',                        // 解决DevToolsActivePort文件不存在的报错
            'window-size=1400,1000',                // 指定浏览器分辨率
            //   '--disable-gpu',                       // 谷歌文档提到需要加上这个属性来规避bug
            //   '--hide-scrollbars',                   // 隐藏滚动条, 应对一些特殊页面
            //  'blink-settings=imagesEnabled=false',  // 不加载图片, 提升速度
    '--disable-blink-features=AutomationControlled',
    '--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41',
];
$capabilitiesOptions = array_merge([
    WebDriverCapabilityType::BROWSER_NAME => WebDriverBrowserType::CHROME,
    WebDriverCapabilityType::PLATFORM     => WebDriverPlatform::ANY,
], $capabilitiesOptions);
$capabilities = new DesiredCapabilities($capabilitiesOptions);
$chromeOptions = new ChromeOptions();
$chromeOptions->addArguments($options);
$chromeOptions->setExperimentalOption('useAutomationExtension',false);
$chromeOptions->setExperimentalOption('excludeSwitches', ['enable-automation', 'enable-logging']);
.....

相关更多的讨论:
https://stackoverflow.com/questions/33225947/can-a-website-detect-when-you-are-using-selenium-with-chromedriver

https://stackoverflow.com/questions/33225947/can-a-website-detect-when-you-are-using-selenium-with-chromedriver/41220267#41220267

https://stackoverflow.com/questions/53039551/selenium-webdriver-modifying-navigator-webdriver-flag-to-prevent-selenium-detec/53040904#53040904