https://github.com/feelinglucky/php-readability/
http://code.fivefilters.org/php-readability
提取正文算法readability PHP实现
发布时间:July 29, 2014 // 分类:PHP // No Comments
添加缓存HEAD
发布时间:July 7, 2014 // 分类:PHP // No Comments
<?php
$cachetime = (60*60*24*30);
header('Cache-Control: public, max-age='.$cachetime);
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT' );
header('Expires: '.gmdate('D, d M Y H:i:s', time() + $cachetime). ' GMT');
?>
PHP检查域名年龄及Whois脚本
发布时间:July 1, 2014 // 分类:PHP // No Comments
<?php
class DomainAge{
private $WHOIS_SERVERS=array(
"com" => array("whois.verisign-grs.com","/Creation Date:(.*)/"),
"net" => array("whois.verisign-grs.com","/Creation Date:(.*)/"),
"org" => array("whois.pir.org","/Created On:(.*)/"),
"info" => array("whois.afilias.info","/Created On:(.*)/"),
"biz" => array("whois.neulevel.biz","/Domain Registration Date:(.*)/"),
"us" => array("whois.nic.us","/Domain Registration Date:(.*)/"),
"uk" => array("whois.nic.uk","/Registered on:(.*)/"),
"ca" => array("whois.cira.ca","/Creation date:(.*)/"),
"tel" => array("whois.nic.tel","/Domain Registration Date:(.*)/"),
"ie" => array("whois.iedr.ie","/registration:(.*)/"),
"it" => array("whois.nic.it","/Created:(.*)/"),
"cc" => array("whois.nic.cc","/Creation Date:(.*)/"),
"ws" => array("whois.nic.ws","/Domain Created:(.*)/"),
"sc" => array("whois2.afilias-grs.net","/Created On:(.*)/"),
"mobi" => array("whois.dotmobiregistry.net","/Created On:(.*)/"),
"pro" => array("whois.registrypro.pro","/Created On:(.*)/"),
"edu" => array("whois.educause.net","/Domain record activated:(.*)/"),
"tv" => array("whois.nic.tv","/Creation Date:(.*)/"),
"travel" => array("whois.nic.travel","/Domain Registration Date:(.*)/"),
"in" => array("whois.inregistry.net","/Created On:(.*)/"),
"me" => array("whois.nic.me","/Domain Create Date:(.*)/"),
"cn" => array("whois.cnnic.cn","/Registration Date:(.*)/"),
"asia" => array("whois.nic.asia","/Domain Create Date:(.*)/"),
"ro" => array("whois.rotld.ro","/Registered On:(.*)/"),
"aero" => array("whois.aero","/Created On:(.*)/"),
"nu" => array("whois.nic.nu","/created:(.*)/")
);
public function age($domain)
{
$domain = trim($domain); //remove space from start and end of domain
if(substr(strtolower($domain), 0, 7) == "http://") $domain = substr($domain, 7); // remove http:// if included
if(substr(strtolower($domain), 0, 4) == "www.") $domain = substr($domain, 4);//remove www from domain
if(preg_match("/^([-a-z0-9]{2,100})\.([a-z\.]{2,8})$/i",$domain))
{
$domain_parts = explode(".", $domain);
//取后缀
$tld = strtolower(array_pop($domain_parts));
if(!$server=$this->WHOIS_SERVERS[$tld][0]) {
return false;
}
$res=$this->queryWhois($server,$domain);
if(preg_match($this->WHOIS_SERVERS[$tld][1],$res,$match))
{
date_default_timezone_set('UTC');
$time = time() - strtotime($match[1]);
$years = floor($time / 31556926);
$days = floor(($time % 31556926) / 86400);
if($years == "1") {$y= "1 year";}
else {$y = $years . " years";}
if($days == "1") {$d = "1 day";}
else {$d = $days . " days";}
return "$y, $d";
}
else
return false;
}
else
return false;
}
private function queryWhois($server,$domain)
{
$fp = @fsockopen($server, 43, $errno, $errstr, 20) or die("Socket Error " . $errno . " - " . $errstr);
if($server=="whois.verisign-grs.com")
$domain="=".$domain;
//echo $domain;
fputs($fp, $domain . "\r\n");
$out = "";
while(!feof($fp)){
$out .= fgets($fp);
}
fclose($fp);
//echo $out;
return $out;
}
}
$w=new DomainAge();
$age = $w->age("baidu.com");
echo $age."\n";
?>
PHP通过Yahoo Content Analysis API生成tag
发布时间:June 27, 2014 // 分类:PHP // No Comments
<?php
$text = 'This domain name expired on 12/6/2014 and is pending renewal or deletion.';
$query = "select * from contentanalysis.analyze where text = '".$text."'";
$url = 'http://query.yahooapis.com/v1/public/yql';
$yql_query_url = $url . "?q=" . urlencode($query);
$yql_query_url .= "&format=json";
$yql_query_url .= "&enable_categorizer=true";
$yql_query_url .= "&diagnostics=false";
$yql_query_url .= "&related_entities=true";
$yql_query_url .= "&show_metadata=true";
$ch = curl_init($yql_query_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result);
var_dump($result);
if(!is_null($result->query->results)) {
foreach($result->query->results->entities as $word) {
if (is_array($word)) {
foreach($word as $subword) {
echo $subword->text->content."\n";
}
} else{
echo $word->text->content."\n";
}
}
}
?>
文档:https://developer.yahoo.com/search/content/V2/contentAnalysis.html
PHP使用Selenium自动化运行chrome/firefox
发布时间:June 26, 2014 // 分类:PHP // 1 Comment
通过composer安装php-webdriver:
apt install php7.4-cli php-curl php-zip
curl -sS https://getcomposer.org/installer | php --install-dir=/usr/bin/
php composer.phar require php-webdriver/webdriver
安装java环境和selenium server:
apt install openjdk-14-jre
wget https://selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.59.jar
java -jar selenium-server-standalone-3.141.59.jar
安装firefox/chrome浏览器和相应的webdirver:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
apt install ./google-chrome-stable_current_amd64.deb
wget https://chromedriver.storage.googleapis.com/88.0.4324.96/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
mv chromedriver /usr/bin/
apt install firefox
wget https://github.com/mozilla/geckodriver/releases/download/v0.29.0/geckodriver-v0.29.0-linux64.tar.gz
tar zxf geckodriver-v0.29.0-linux64.tar.gz
mv geckodriver /usr/bin/
启动浏览器需X环境支持,可使用XVNC或X Window
可以使用Firefox扩展Selenium IDE: PHP Formatters录制脚本。
selenium chrome使用:
<?php
require_once('vendor/autoload.php');
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Chrome\ChromeOptions;
$host = 'http://localhost:4444/wd/hub';
$options = new ChromeOptions();
$options->addArguments(array(
'--no-sandbox',
'--headless',
'--start-maximized',
'--user-data-dir=/tmp/chrome-user-data-dir',
'--profile-directory=/tmp/chrome-profile-dir',
'--user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'
));
$caps = DesiredCapabilities::chrome();
$caps->setCapability(ChromeOptions::CAPABILITY, $options);
$driver = RemoteWebDriver::create($host, $caps);
//default
//$driver = RemoteWebDriver::create($host, DesiredCapabilities::chrome());
//$driver->manage()->window()->maximize();
$driver->get('https://www.haiyun.me/');
var_dump($driver->getTitle());
$driver->quit();
selenium firefox使用:
<?php
namespace Facebook\WebDriver;
require 'vendor/autoload.php';
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Firefox\FirefoxProfile;
use Facebook\WebDriver\Firefox\FirefoxDriver;
$host = 'http://localhost:4444/wd/hub';
$profile = new FirefoxProfile();
$profile->setPreference('browser.startup.homepage', 'https://github.com/facebook/php-webdriver/');
$profile->setPreference("general.useragent.override", "Mozilla/5.0");
//$profile->addExtension('./vimperator-3.8.2-fx.xpi');
$caps = DesiredCapabilities::firefox();
$caps->setCapability(FirefoxDriver::PROFILE, $profile);
$caps->setCapability('moz:firefoxOptions', ['args' => ['-headless']]);
$caps->setCapability('moz:firefoxOptions', ['args' => ["-profile", "/tmp/firefox_profile"]]);
$driver = RemoteWebDriver::create($host, $caps);
//default
//$driver = RemoteWebDriver::create($host, DesiredCapabilities::firefox());
$driver->manage()->window()->maximize();
$driver->get('https://www.haiyun.me/');
var_dump($driver->getTitle());
$driver->quit();
文档:
https://github.com/php-webdriver/php-webdriver/wiki
https://php-webdriver.github.io/php-webdriver/
分类
- Apache (13)
- Nginx (45)
- PHP (86)
- IIS (8)
- Mail (17)
- DNS (16)
- Cacti (14)
- Squid (5)
- Nagios (4)
- Puppet (7)
- CentOS (13)
- Iptables (23)
- RADIUS (3)
- OpenWrt (41)
- DD-WRT (1)
- VMware (9)
- 网站程序 (2)
- 备份存储 (11)
- 常用软件 (20)
- 日记分析 (10)
- Linux基础 (18)
- 欧诺代理 (0)
- Linux服务 (18)
- 系统监控 (4)
- 流量监控 (7)
- 虚拟化 (28)
- 伪静态 (2)
- LVM (3)
- Shell (18)
- 高可用 (2)
- 数据库 (16)
- FreeBSD (3)
- 网络安全 (25)
- Windows (35)
- 网络工具 (22)
- 控制面板 (3)
- 系统调优 (10)
- Cisco (3)
- VPN (6)
- ROS (20)
- Vim (14)
- KMS (4)
- PXE (2)
- Mac (1)
- Git (1)
- PE (1)
- LNS (2)
- Xshell (7)
- Firefox (13)
- Cygwin (4)
- OpenSSL (9)
- Sandboxie (3)
- StrokesPlus (1)
- AutoHotKey (4)
- Total Commander (3)
- WordPress (3)
- iMacros (6)
- Typecho (2)
- Ollydbg (1)
- Photoshop (1)
- 正则 (3)
- Debian (3)
- Python (8)
- NoSQL (6)
- 消息队列 (4)
- JS (7)
- Tmux (3)
- GO (7)
- HHVM (2)
- 算法 (1)
- Docker (2)
- PT (15)
- N1 (16)
- K2P (6)
- LUKS (4)
最新文章
- 光猫拨号ImmortalWrt/OpenWRT路由获取ipv6遇到的问题
- php-fpm错误error_log日志配置
- debian-12/bookworm安装mariadb10.3和mysql5.6
- smokeping主从配置及遇到的问题
- openwrt/linux使用tcpdump/nflog ulogd记录iptables日志
- tmux bash shell自动保存history
- ImmortalWrt/OpenWRT为guest wifi网络配置ipv6 nat6
- PVE更新upgrade遇到The following packages have been kept back
- openwrt/immortalwrt修改odhcpd ipv6 preferred_lifetime和valid_lifetime
- golang版本udpxy iptv rtp多播转http单播
最近回复
- opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
- liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
- 海运: 不好意思,没有。
- zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
- 海运: 恩山有很多。
- swsend: 大佬可以分享一下固件吗,谢谢。
- Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
- 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
- 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
- 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...