当前位置: 首页 > 知识库问答 >
问题:

展开跟踪像素

罗飞宇
2023-03-14

我试图建立一个像素,将跟踪当前的URL,用户是在他们访问。我可以使用JS(首选)或1x1图像像素。对于JS,我假设我需要运行一个对PHP脚本的AJAX请求来捕获我需要的信息,而对于一个图像像素,我在获取当前URL时遇到了问题。

我还考虑了用JS对当前URL进行URL编码,并将图像像素与编码后的当前URL动态地放置为PHP脚本的查询字符串,但可能会很长。

如果我要走AJAX路线,我可以使用哪个AJAX库?JQuery太臃肿了。

还有别的主意吗?

共有3个答案

马俊
2023-03-14

输出1px x 1px如下:

header('Content-type: image/png');
echo gzinflate(base64_decode('6wzwc+flkuJiYGDg9fRwCQLSjCDMwQQkJ5QH3wNSbCVBfsEMYJC3jH0ikOLxdHEMqZiTnJCQAOSxMDB+E7cIBcl7uvq5rHNKaAIA'));
瞿兴朝
2023-03-14

下面是另一个跟踪像素的PHP实现,来自Open Web Analytics项目,它试图基本上是Google Analytics的PHP克隆。

它返回一个1x1透明的GIF图像(不使用PHP图像库),带有一个no-cache头(对于精确跟踪很重要),并刷新输出,这样您就可以继续处理分析而不会阻塞HTTP响应(性能)。这似乎是一个相当先进的实现,值得一试。

<?php
ignore_user_abort(true);

// turn off gzip compression
if ( function_exists( 'apache_setenv' ) ) {
  apache_setenv( 'no-gzip', 1 );
}

ini_set('zlib.output_compression', 0);

// turn on output buffering if necessary
if (ob_get_level() == 0) {
  ob_start();
}

// removing any content encoding like gzip etc.
header('Content-encoding: none', true);

//check to ses if request is a POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  // the GIF should not be POSTed to, so do nothing...
  echo ' ';
} else {
  // return 1x1 pixel transparent gif
  header("Content-type: image/gif");
  // needed to avoid cache time on browser side
  header("Content-Length: 42");
  header("Cache-Control: private, no-cache, no-cache=Set-Cookie, proxy-revalidate");
  header("Expires: Wed, 11 Jan 2000 12:59:00 GMT");
  header("Last-Modified: Wed, 11 Jan 2006 12:59:00 GMT");
  header("Pragma: no-cache");

  echo sprintf('%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%',71,73,70,56,57,97,1,0,1,0,128,255,0,192,192,192,0,0,0,33,249,4,1,0,0,0,0,44,0,0,0,0,1,0,1,0,0,2,2,68,1,0,59);    
}

// flush all output buffers. No reason to make the user wait for OWA.
ob_flush();
flush();
ob_end_flush();

// DO ANALYTICS TRACKING HERE
章锦
2023-03-14

您可以编写一个脚本,该脚本使用PHP创建并返回 图像,以便使用GD库(通常在现代版本中随PHP一起分发)进行跟踪。如果您没有访问GD的权限,您总是可以在启用GD的情况下重新编译PHP。

示例:

(出于解释的目的对其进行了注释):

<?php

  // Create an image, 1x1 pixel in size
  $im=imagecreate(1,1);

  // Set the background colour
  $white=imagecolorallocate($im,255,255,255);

  // Allocate the background colour
  imagesetpixel($im,1,1,$white);

  // Set the image type
  header("content-type:image/jpg");

  // Create a JPEG file from the image
  imagejpeg($im);

  // Free memory associated with the image
  imagedestroy($im);

?>

在一个简单的示例中,然后可以在电子邮件或其他页面中使用以下示例URL调用此跟踪像素:

<img src="http://example.com/pixel.php?a=value1&b=value2&c=value3">

使用变量:

然后,在 中,您可以解析和解释图像标记中传递给它的任何 变量,方法很简单:

if (isset($_GET['a'])) {
  // (Do|log) act on a
}
if (isset($_GET['b'])) {
  // (Do|log) act on b
}
if (isset($_GET['c'])) {
  // (Do|log) act on c
}

根据需要进行应用和重复,但是您可以对所做的工作非常复杂,特别是当您可以通过在 字符串上设置变量来访问有关用户的大量信息时。

一个更适用的例子可能是:

<img src="http://example.com/pixel.php?userid=98798&campaign=302&last=8">

不仅跟踪_get变量:

您还可以使用PHP获取更多信息,例如:

// Server variables
$ip = $_SERVER['REMOTE_ADDR'];
$referer = $_SERVER['HTTP_REFERER'];
$useragent = $_SERVER['HTTP_USER_AGENT'];
$browser = get_browser(null, true);
etc...

然后在数据库的跟踪表中插入:

$sql = "INSERT INTO campaign_tracking 
        ('when','campaign','last','ip','useragent') 
        VALUES 
        (NOW(),'$campaign','$last','$ip','$useragent')";

这是一种广泛用于跟踪电子邮件营销活动的基本方法,特别是在PHP中,但同样的方法也适用于其他脚本/编程语言和库--也适用于其他目的。

关于全球发展的更多有用信息:

 类似资料:
  • 问题内容: 我正在尝试构建一个像素,以跟踪用户访问时所在的当前URL。我可以使用JS(首选)或1x1图像像素。使用JS,我假设我需要对PHP脚本运行AJAX请求以捕获所需的信息,而对于图像像素,获取当前URL时遇到问题。 我还考虑过使用JS对当前URL进行URL编码,然后将带有编码后的当前URL的图像像素作为查询字符串动态放置到PHP脚本中,但是我可能会变得很长。 如果我要走AJAX路线,可以使用

  • 跟踪行为控制着 Entity Framework Core 是否会在其变更跟踪器里维持实体实例的信息。如果实体是被跟踪的,任何检测到的该实体的变更都将在 SaveChanges() 时持久化到数据库中。Entity Framework Core 还会对已跟踪的、之前已加载到 DbContext 实例中的查询和实体进行相互的导航属性装配。 提示 你可以在 GitHub 上查阅当前文章涉及的代码样例。

  • Trace 事件提供了一种机制,可以集中由 V8,Node 核心, 以及用户代码生成的跟踪信息。 启动 Node.js 应用时添加 --trace-events-enabled 标记,可以启用 Tracing. 可以通过在 --trace-event-categories 标记后跟一个用逗号分隔的类别名称列表, 来指定特定的跟踪记录集合。 node 和 v8 默认启用。 node --trace-

  • 跟踪配置指定了Envoy使用的HTTP跟踪器的全局设置。在服务的顶层配置上定义。未来,Envoy可能会支持其他跟踪器,但现在HTTP跟踪器是唯一支持的跟踪器。 { "http": { "driver": "{...}" } } http (optional, object) 提供HTTP跟踪器的配置。 driver (optional, object) 提供处理跟踪和创建span

  • 概述 分布式跟踪使开发人员可以在大型面向服务的体系结构中获得调用流的可视化。在理解序列化,并行性和延迟来源方面,这是非常宝贵的。Envoy支持系统范围与跟踪相关的三个功能: 请求ID生成:Envoy将在需要时生成UUID并填充x-request-id HTTP头。 应用程序可以转发x-request-id头以进行统一日志记录以及跟踪。 外部跟踪服务集成:Envoy支持可插入的外部跟踪可视化提供程序

  • Bug跟踪是一个宽泛的话题;贯穿本书会讨论此问题的各个方面。尽管这里我们要着重于配置和技术因素,但是首先要从一个策略问题开始:Bug跟踪系统中应该包含哪些信息? 术语Bug跟踪很有误导性。Bug跟踪系统也通常会用来跟踪哪些初始与结束状态不同,包含可选的中间状态,并在生命周期中积累信息的问题,例如新特性请求、一次性任务以及被动性的补丁。由于这些原因,Bug跟踪也被称为问题跟踪(issue track

  • 本章介绍如何使用Zipkin或Jaeger收集启用了Istio的应用程序的调用链信息。 完成本章后,你可以理解有关应用程序的所有假设以及如何使其参与跟踪,无论您使用何种语言/框架/平台构建应用程序。 BookInfo示例用来作为此任务的示例应用程序。 环境准备 参照安装指南的说明安装Istio。 如果您在安装过程中未启动Zipkin或Jaeger插件,则可以运行以下命令启动: 启动Zipkin:

  • 可以通过设置spring.cloud.bus.trace.enabled=true来跟踪总线事件(RemoteApplicationEvent的子类)。如果这样做,那么Spring Boot TraceRepository(如果存在)将显示每个发送的事件和来自每个服务实例的所有ack。示例(来自/trace端点): { "timestamp": "2015-11-26T10:24:44.411