導航:首頁 > 編程語言 > php代理模式偽代碼

php代理模式偽代碼

發布時間:2022-05-17 04:27:49

⑴ 為什麼我php 用curl_proxy 不生效

這個是PHP的curl的代理模式,這個模式你在使用的時候是需要配合其他的一起使用的。所以單純說這個沒有用還要看你其他的代碼怎麼寫。
希望你可以把代碼放上來看看。

⑵ PHP使用代理方法獲取遠程網頁的代碼.

functioncurl_string($url,$user_agent,$proxy){

$ch=curl_init();
curl_setopt($ch,CURLOPT_PROXY,$proxy);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_USERAGENT,$user_agent);
curl_setopt($ch,CURLOPT_COOKIEJAR,"c:cookie.txt");
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_TIMEOUT,120);
$result=curl_exec($ch);
curl_close($ch);
return$result;

}

$url_page="http://www..com";
$user_agent="Mozilla/4.0";
$proxy="http://192.11.222.124:8000";//這里是http代理
$string=curl_string($url_page,$user_agent,$proxy);
echo$string;

⑶ 如何向PHP偽造自己的ip

要看具體代碼是怎麼寫的,如果代碼寫得不好是有可能偽造的。
獲取IP的方法有幾種,通過例子看一下,這個是ThinkPHP里的獲取IP的函數:
/**
* 獲取客戶端IP地址
* @param integer $type 返回類型 0 返回IP地址 1 返回IPV4地址數字
* @param boolean $adv 是否進行高級模式獲取(有可能被偽裝)
* @return mixed
*/
function get_client_ip($type = 0,$adv=false) {
$type = $type ? 1 : 0;
static $ip = NULL;
if ($ip !== NULL) return $ip[$type];
if($adv){
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$pos = array_search('unknown',$arr);
if(false !== $pos) unset($arr[$pos]);
$ip = trim($arr[0]);
}elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
}elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
}elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
// IP地址合法驗證
$long = sprintf("%u",ip2long($ip));
$ip = $long ? array($ip, $long) : array('0.0.0.0', 0);
return $ip[$type];
}

$_SERVER['HTTP_CLIENT_IP'] 是HTTP信息中的IP,存在於http請求的header中,可以偽造;
$_SERVER["REMOTE_ADDR"] 可取得客戶端的 IP 地址,但如果客戶端是使用代理伺服器來訪問,那取到的就是代理伺服器的 IP 地址,而不是真正的客戶端 IP 地址。不可以偽造,但可以用代理。
$_SERVER["HTTP_X_FORWARDED_FOR"] 可以透過代理伺服器取得客戶端的真實 IP 地址,但有時候也不管用,也可以偽造。

⑷ 代理模式的實現方式

下面我舉個例子來說明這一切:
場景:業務類CompanyManager在調用Save方法的時候需要調用SecurityManager類判斷許可權是否足夠
第一種實現方式,我們通常會這樣做:直接在CompanyManager類中調用ISecurityManager介面的IsPass方法判斷許可權。
public class SimpleCompanyManager : ICompanyManager
{
可通過外部注入的屬性#region 可通過外部注入的屬性

public string UserName { get; set; }

public CompanyDao Dao { get; set; }

#endregion

public void Save()
{
//判斷許可權
ISecurityManager security = new SecurityManager();
if (security.IsPass(UserName))
{
//執行業務方法
//.
//調用DAO層方法
Dao.Save();
}
else
{
//執行其它業務方法
Console.WriteLine("您沒有該許可權");
}
}
}
這樣CompanyManager類與ISecurityManager或SecurityManager會發生業務性耦合。聰明的朋友會發現在GOF(設計模式)中有一種模式(代理模式)可以解除這種耦合。
代理模式(Proxy Pattern):什麼是代理模式?是給某一個對象提供一個代理對象,並由代理對象控制對源對象的引用。代理就是一個人或一個機構代表另一個人或者一個機構採取行動。某些情況下,客戶不想或者不能夠直接引用一個對象,代理對象可以在客戶和目標對象直接起到中介的作用。客戶端分辨不出代理主題對象與真實主題對象。代理模式可以並不知道真正的被代理對象,而僅僅持有一個被代理對象的介面,這時候代理對象不能夠創建被代理對象,被代理對象必須有系統的其他角色代為創建並傳入
CompanyManager
public class CompanyManager : ICompanyManager
{
可通過外部注入的屬性#region 可通過外部注入的屬性

public string UserName { get; set; }

public CompanyDao Dao { get; set; }

#endregion

public void Save()
{
//執行業務方法
//.
//調用DAO層方法
Dao.Save();
}
}
CompanyProxyManager
public class CompanyProxyManager : ICompanyManager
{
public string UserName { get; set; }

private ICompanyManager target = new CompanyManager();

public void Save()
{
//判斷許可權
ISecurityManager security = new SecurityManager();
if (security.IsPass(UserName))
{
//調用目標對象Save方法
target.Save();
}
else
{
Console.WriteLine("您沒有該許可權");
}
}
}
這樣,CompanyManager類就不必與判斷許可權的類SecurityManager耦合
代理模式作用就是接觸業務耦合,保證業務的獨立性
摘自 劉冬的博客園

⑸ PHP代碼如何放行代理伺服器IP

<?php
//授權IP
$ips=['119.29.29.29','8.8.8.8'];
//代理IP直接退出
empty($_SERVER['HTTP_VIA'])orexit('AccessDenied');
//防止快速刷新
session_start();
$seconds='3';//時間段[秒]
$refresh='5';//刷新次數
//設置監控變數
$cur_time=time();
if(isset($_SESSION['last_time'])){
$_SESSION['refresh_times']+=1;
}else{
$_SESSION['refresh_times']=1;
$_SESSION['last_time']=$cur_time;
}
//處理監控結果
if($cur_time-$_SESSION['last_time']<$seconds){
if($_SESSION['refresh_times']>=$refresh&&!in_array($getIP,$ips)){
//跳轉至攻擊者伺服器地址
header(sprintf('Location:%s','
));
exit('AccessDenied');
}
}else{
$_SESSION['refresh_times']=0;
$_SESSION['last_time']=$cur_time;
}

functiongetIP(){
if(getenv('HTTP_CLIENT_IP')){
$ip=getenv('HTTP_CLIENT_IP');
}elseif(getenv('HTTP_X_FORWARDED_FOR')){
$ip=getenv('HTTP_X_FORWARDED_FOR');
}elseif(getenv('HTTP_X_FORWARDED')){
$ip=getenv('HTTP_X_FORWARDED');
}elseif(getenv('HTTP_FORWARDED_FOR')){
$ip=getenv('HTTP_FORWARDED_FOR');

}elseif(getenv('HTTP_FORWARDED')){
$ip=getenv('HTTP_FORWARDED');
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}

return$ip;
}

⑹ 【php面試題】請寫出php代理模式的偽代碼

小白不懂題目的意思,難道是偽造CURL來源IP?
不過偽造IP倒也是必須用代理
比如: curl_setopt($curl, CURLOPT_PROXY, "http://116.236.216.116:8080/");

⑺ 用PHP代碼如何實現真實IP和代理IP

幫你編一段測試代碼,樓主試試吧!

<?PHP

if ($_SERVER['HTTP_X_FORWARDED_FOR'] == "")
{
echo '您的IP地址是:'.$_SERVER['HTTP_X_FORWARDED_FOR']."
";
echo '沒有使用代理。
'
}
else
{
echo '您的IP地址是:'.$_SERVER['HTTP_X_FORWARDED_FOR']."
";
echo '代理的IP地址:'.$_SERVER['REMOTE_ADDR'].'
';
}

?>

這代碼只能正確顯示對方使用透明代理時的結果~
希望對你有幫助!

⑻ 如何自己用PHP編寫偽代碼程序

偽代碼寫的代碼和編程寫的代碼思想是一樣的,只是語法上偽代碼比較隨意點,在編譯器里不能直接編譯。反碼表示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。

⑼ php代理問題

你應該是資料庫管理的吧,必須有一個會員表吧,每個會員一條記錄,記錄每個會員的相關信息,大概有這些欄位:

會員表(會員ID,姓名,會員級別(1,2,3),上級會員ID,祖宗會員ID)


會員ID可以使用身份證號,也可以讓資料庫自己編碼,新增加會員需要做三件事情:

  1. 獲取上級會員的祖宗會員ID,

    SELECT 祖宗ID FROM 會員表 WHERE 會員ID='推薦人ID'

  2. 添加會員

    INSERT INTO 會員表 VALUES ('新會員ID','新會員姓名','新會員默認級別例如3','推薦人ID','祖宗ID')

  3. 修改推薦人的級別

    SELECT COUNT(*) FROM 會員表 WHERE 上級會員ID='推薦人ID'

    如果查詢的結果數量>=10,那麼執行下面的修改

    UPDATE 會員表 SET 會員級別=2 WHERE 會員ID='推薦人ID' AND會員級別=3

⑽ php如何用代理訪問網站 求代碼

CURL 就可以啊!你的先自己開個http代理 。或者網路找一些http代理

然後在curl裡面設置http代理就可以了。

functioncurl_string($url,$user_agent,$proxy){
$ch=curl_init();
curl_setopt($ch,CURLOPT_PROXY,$proxy);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_USERAGENT,$user_agent);
curl_setopt($ch,CURLOPT_COOKIEJAR,"c:cookie.txt");//可刪除
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_TIMEOUT,120);
$result=curl_exec($ch);
curl_close($ch);
return$result;

}
$content="http://www.google.com";$user_agent="Mozilla/4.0";$proxy="http://192.11.222.124:8000";
閱讀全文

與php代理模式偽代碼相關的資料

熱點內容
app會員卡怎麼做 瀏覽:921
我愛你python編碼 瀏覽:365
一台計算機作為伺服器一般可以運行什麼軟體 瀏覽:421
應用加密桌面還顯示頭像咋辦 瀏覽:523
微軟硬碟加密密鑰 瀏覽:156
空調壓縮機和風扇 瀏覽:511
代碼可以編譯運行 瀏覽:918
銀行卡加密碼大全真號 瀏覽:447
單片機測esr 瀏覽:412
app怎麼設置消息功能 瀏覽:916
明詞pdf 瀏覽:427
雲域控伺服器有什麼用 瀏覽:577
位元組和B站程序員 瀏覽:747
app推薦書要怎麼做 瀏覽:303
unix網路編程第一卷 瀏覽:851
c需要pdf 瀏覽:865
超級解壓的美甲 瀏覽:72
安卓手機如何永久取消靜音 瀏覽:722
appstore免密碼支付怎麼關閉 瀏覽:30
域控制器如何備份到另一伺服器 瀏覽:306