在做一个视频网站,需要判断用户是否来自墙内,如果是的话就生成腾讯视频的链接,否则生成Youtube的链接。
大概查了一下,如果用PHP的话,貌似得用用户的IP和IP地址的数据库去对照看是否来自国内,挺麻烦的,在SO上看到有一个简单的方法用JS可以实现。
<code>var image = new Image(); image.onload = function(){ // The user can access youtube }; image.onerror = function(){ // The user can't access youtube }; image.src = "http://youtube.com/favicon.ico"; </code>
原理很简单,就是尝试读取Youtube的网站图标,如果不成功就说明是在墙内。
我就用这个方法写了程序然后叫国内的朋友测试,结果发现Youtube不是一直打不开的,很多时候Youtube能够极其缓慢地打开,但是在这种情况下以上的代码却会很快返回成功的信息……
想请教下,
1)现在到底国内能不能打开Youtube? 还是说虽然能开但是非常慢?
2) 有没有什么更好的方法判断用户是否能使用Youtube?
回复内容:
在做一个视频网站,需要判断用户是否来自墙内,如果是的话就生成腾讯视频的链接,否则生成Youtube的链接。
大概查了一下,如果用PHP的话,貌似得用用户的IP和IP地址的数据库去对照看是否来自国内,挺麻烦的,在SO上看到有一个简单的方法用JS可以实现。
<code>var image = new Image(); image.onload = function(){ // The user can access youtube }; image.onerror = function(){ // The user can't access youtube }; image.src = "http://youtube.com/favicon.ico"; </code>
原理很简单,就是尝试读取Youtube的网站图标,如果不成功就说明是在墙内。
我就用这个方法写了程序然后叫国内的朋友测试,结果发现Youtube不是一直打不开的,很多时候Youtube能够极其缓慢地打开,但是在这种情况下以上的代码却会很快返回成功的信息……
想请教下,
1)现在到底国内能不能打开Youtube? 还是说虽然能开但是非常慢?
2) 有没有什么更好的方法判断用户是否能使用Youtube?
你可以换成轮子的网站。。那种都是稳定被墙的。。
直接访问不了,我修改过hosts能访问网页,但视频无法加载。我觉得你可以让用户选择。
会不会是运营商那里的cache搞的鬼, 加个"no-cache"或随机参数试试
如果 墙内==国内的话,那么你可以用apnic的国内IP列表来做,不过可能会有漏网之鱼。
用在线验证的方法不可靠的,原因:
1、远端不确定会返回给你什么信息,而且可能会给开发者和使用者带来人身安全问题。
2、如果用户开了部分那啥功能(比如啥啥list或者omega根据部分域名做那啥啥啥),你的判定方法就会失效。

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

PHP is not dying, but constantly adapting and evolving. 1) PHP has undergone multiple version iterations since 1994 to adapt to new technology trends. 2) It is currently widely used in e-commerce, content management systems and other fields. 3) PHP8 introduces JIT compiler and other functions to improve performance and modernization. 4) Use OPcache and follow PSR-12 standards to optimize performance and code quality.

The future of PHP will be achieved by adapting to new technology trends and introducing innovative features: 1) Adapting to cloud computing, containerization and microservice architectures, supporting Docker and Kubernetes; 2) introducing JIT compilers and enumeration types to improve performance and data processing efficiency; 3) Continuously optimize performance and promote best practices.

In PHP, trait is suitable for situations where method reuse is required but not suitable for inheritance. 1) Trait allows multiplexing methods in classes to avoid multiple inheritance complexity. 2) When using trait, you need to pay attention to method conflicts, which can be resolved through the alternative and as keywords. 3) Overuse of trait should be avoided and its single responsibility should be maintained to optimize performance and improve code maintainability.

Dependency Injection Container (DIC) is a tool that manages and provides object dependencies for use in PHP projects. The main benefits of DIC include: 1. Decoupling, making components independent, and the code is easy to maintain and test; 2. Flexibility, easy to replace or modify dependencies; 3. Testability, convenient for injecting mock objects for unit testing.

SplFixedArray is a fixed-size array in PHP, suitable for scenarios where high performance and low memory usage are required. 1) It needs to specify the size when creating to avoid the overhead caused by dynamic adjustment. 2) Based on C language array, directly operates memory and fast access speed. 3) Suitable for large-scale data processing and memory-sensitive environments, but it needs to be used with caution because its size is fixed.

PHP handles file uploads through the $\_FILES variable. The methods to ensure security include: 1. Check upload errors, 2. Verify file type and size, 3. Prevent file overwriting, 4. Move files to a permanent storage location.

In JavaScript, you can use NullCoalescingOperator(??) and NullCoalescingAssignmentOperator(??=). 1.??Returns the first non-null or non-undefined operand. 2.??= Assign the variable to the value of the right operand, but only if the variable is null or undefined. These operators simplify code logic, improve readability and performance.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

SublimeText3 English version
Recommended: Win version, supports code prompts!

Zend Studio 13.0.1
Powerful PHP integrated development environment

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SublimeText3 Mac version
God-level code editing software (SublimeText3)