PHP Socket 实现 TCP、UDP 报文的发送与接收

【原文链接:https://blog.zhengxianjun.com/2015/05/php-socket/】

利用 PHP Socket 相关函数实现 TCP、UDP 端口监听。

需要注意,下面的示例代码中没有处理 Socket 错误。实际应用场景中每一步 Socket 的连接、写入、读取都需要进行错误判断和处理,相应的函数 socket_connect、socket_write、socket_read 以及 socket_bind、socket_listen 返回 false 时,需要调用 socket_last_error() 获取最新的 socket 错误号 $errno,并通过 socket_strerror($errno) 获取错误号对应的能够阅读的错误描述信息。 继续阅读“PHP Socket 实现 TCP、UDP 报文的发送与接收”

虚拟机中共享主电脑的文件夹

目的

代码只能在主电脑中使用git拉取下来,但想在虚拟机中配置开发环境,并使用主电脑中的代码文件。

实现

  1. 网卡设置为桥接模式
  2. 挂载VBoxGuestAddition.iso镜像文件。使用命令: $sudo mount /dev/cdrom /mnt
    此时会出现提示:mount: block device /dev/sr0 is write-protected, mounting read-only.此提示无需理会。
  3. 使用 ls /mnt 命令查看是否加载成功,加载成功,请进行下一步。
    运行VBoxLinuxAdditions.run,使用命令: $sh /mnt/VBoxLinuxAdditions.run
  4. 挂载虚拟文件夹.
    在VirtualBox的设置里面添加共享文件夹,功能在“设置”->“共享文件夹”内:
    1、点击”共享文件夹路径“选择需要共享的文件夹(确保不为空),比如D:\www
    2、输入“共享文件夹名称”,名称建议和文件夹名不一致比如htdoc
    3、选择“固定分配”
  5. 重启虚拟机。
  6. 尝试挂载共享文件夹了,使用命令如下:
    $sudo mount -t vboxsf htdoc /data/www
    通过命令 ls /data/www 查看是否挂载成功,如果显示了D:\www文件夹内的文件,则表示虚拟文件夹挂载成功。

备注

若最后一步挂载失败,使用lsmod|grep vboxsf 查看vboxsf模块是否有加载,若不存在,尝试升级内核、并重启虚拟机。(参考https://www.cnblogs.com/uqing/p/8160318.html

虚拟机VirtualBox中安装Centos7并配置Nginx

需要注意的点:

  1. 让虚拟机能访问外网,需要配置网络,使用NAT配置
  2. centos7 中查看IP的命令: ip addr
  3. centos7 中默认的防火墙不是iptables,而是firewalle,关闭方式: systemctl mask firewalld
  4. 安装Nginx前,要先安装EPEL库: sudo yum install epel-release

【参考】

  1. 虚拟机网络配置:https://www.jianshu.com/p/3585fecbfd4b
  2. 关闭防火墙:https://www.cnblogs.com/kreo/p/4368811.html
  3. 安装Nginx:https://blog.csdn.net/u011138533/article/details/53162499

python 通过SSL加密方式发送邮件

【摘自:】https://www.programcreek.com/python/example/6443/smtplib.SMTP_SSL

nginx——展示目录中的文件列表

在配置nginx的vhosts时,在http模块下添加以下配置,如

显示效果:

【参考】http://www.cnblogs.com/siqi/archive/2012/10/07/2713732.html

python-pip3安装pycurl

若安装时遇到报ssl相关的错误(如下)

解决方法参考:

新版MAC:

参考链接:https://hk.saowen.com/a/431b34187c78c994d278c1a1a10d480bab83b28085468aca67ce9171ea8307fc

 

windows上考虑安装anaconda,通过anaconda来解决:

参考链接:https://anaconda.org/anaconda/pycurl

Python爬虫模拟人为操作

有些大厂,像BAT可能对爬虫这类检测做的很厉害,为了模拟人为操作,需要让脚步运行的慢一些。

以下python代码用于登录支付宝账号,为了更像真人操作,

  1. 录入账号密码时,每次录入一个字符都暂停若干时间;
  2. 且暂停时间是随机时间,不固定;
  3. 同时也在一些按钮上悬停若干时间后再执行点击事件。