我正在抓取一个网站,其中包含格式为root/page_number.html连续page_num整数的页面。如果我爬行太快,网站会阻止我,所以我认为使用 AWS Lambda 爬行是一个好主意,这样每次进行新函数调用时 IP 地址都会不断轮换。
然后我编写了每次只抓取 100 个页面的函数,以确保在具有不同 IP 地址的不同机器上生成许多并行任务。刚开始的时候效果还不错,但是爬了大约10万个页面之后还是被网站屏蔽了。这让我想知道:
当我使用C++和winsock库访问" http://www.whatsmyip.org/ " 时,如何获得相同的IP地址?
我知道如何获得"127.0.0.1"和路由器IP"192.168.1.103"...但是当我到" http://www.whatsmyip.org/ "时,我得到"65.55.105.132"......
我怎么能做到这一点?
我想知道是否可以动态添加指向动态IP地址的子域,以及我将如何做到这一点?换句话说,"如何实现dyndns/no-ip":-)?(我没有得到的部分是添加/更改DNS条目......我理解客户端每隔几分钟发送一个数据包-___-).当然,我可以告诉我的所有用户只使用DynDNS/No-IP,但是将它与应用程序集成会更酷.
谢谢,罗伯特
我的网站的评论功能不断受到来自这两个IP地址的垃圾邮件的轰炸:
我目前正在阻止他们在文本级别,因为他们都有:
weebly.com
在它们中,我认为如果我通过IP地址阻止它们,那么我也可以阻止真实用户.
阻塞IP地址是否也可以阻止具有相同IP地址的真实用户,例如使用拨号提供商?
我怎样才能知道谁在运行这些垃圾邮件服务?
我如何能够帮助将这些IP地址报告给负责防止互联网上垃圾邮件的中央机构?
我正在尝试为我的作业创建一个PHP脚本.出于安全原因,我需要脚本来记录IP地址.
出于某种原因,当我运行以下代码时:
echo $_SERVER['REMOTE_ADDR'];
Run Code Online (Sandbox Code Playgroud)
结果是:
::1
Run Code Online (Sandbox Code Playgroud)
我以为localhost ip地址总是像127.0.0.1?
有谁知道发生了什么?这真是让我烦恼,我似乎无法找到问题的解决方案.即使谷歌没有找到任何相关的...
我应该提一下,我正在Windows 7 64位机器上运行XAMPP安装.
提前致谢.
我使用此代码获取可用的IPv4地址:
static void Main(string[] args)
{
string host = System.Net.Dns.GetHostName();
System.Net.IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(host);
System.Net.IPAddress[] ipAddr = ipEntry.AddressList;
for (int i = 0; i < ipAddr.Length; i++)
{
if (ipAddr[i].AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
Console.WriteLine( ipAddr[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
对于我的机器,这目前给出:
192.168.1.11
192.168.240.1
192.168.182.1
10.1.1.121
192.168.1.11是我的网络适配器,接下来的两个来自VMware Network,10.1.1.121来自当前活动的OpenVPN连接.
如何才能可靠地检测IPv4地址192.168.1.11(=网络适配器)?我猜这只是偶然的第一名.
谢谢,罗伯特
我已经在这个问题上做了一些功课,我很确定它会涉及加入一张桌子,但我还没到那里.
我有一个带有"帖子"表的论坛.它存储论坛上发布的每个帖子的ipaddress,用户名,用户ID和postid.
我试图获得一个查询,我可以每周运行一次,这将输出我在此期间已被多个用户ID使用的ipaddresses列表 - 并且postids涉及多个用户ID使用相同的ipaddress.
到目前为止,我从其他人的类似问题中得到了这个:
SELECT t1.userid,t2.userid, t1.username, t2.username, t1.ipaddress, t2.ipaddress, t1.postid, t2.postid
FROM qvb_post t1
INNER JOIN qvb_post t2 ON t1.ipaddress=t2.ipaddress AND t1.userid!=t2.userid
WHERE
t1.dateline > 1335897698 AND t2.dateline > 1335897698
Run Code Online (Sandbox Code Playgroud)
但它返回了许多不必要的行IMO,例如它返回每个重复的方式 - 两者都好像userid 1使用了userid 2的ipaddress,再次就像userid2使用了userid1的地址一样.
日期线是几天前的.
理想情况下,我想按顺序查看重复用户名的ip地址列表,并为每个帖子重复,这样我就可以使用PHP并生成一个输出IP地址的报告,使用它的用户名(userids) ,以及他们创造的postids.
我知道有两个人拥有相同的IP地址有很多正当理由,请放心,不会因为出现在本报告中而对任何人采取严厉的行动.
提前感谢您提供的任何帮助.
为了清楚我对PHP很好,它只是我需要帮助的查询.
我正在使用TCP制作服务器程序,我希望得到刚刚收到的消息发送者的IP地址.这是我的代码:
case FD_READ:
{ //Incoming data; get ready to receive
char buffer[DEFAULT_BUFLEN];
int bytes_received;
memset(buffer, '\0', sizeof(buffer));
struct sockaddr_in recvIn;
int recv_length = sizeof(struct sockaddr);
memset((void *)&recvIn, '\0', recv_length);
bytes_received = recvfrom(wParam, buffer, DEFAULT_BUFLEN, 0, (struct sockaddr *)&recvIn, &recv_length);
cout << inet_ntoa(recvIn.sin_addr) << "\n";
break;
}
Run Code Online (Sandbox Code Playgroud)
所以我正在使用Windows消息来查看是否应该检查数据包.接收数据有效,我可以阅读它和一切.但recvIn变量不会被recvfrom改变.因此,当我执行cout << inet_ntoa(recvIn.sin_addr)<<"\n"时,它会写入"0.0.0.0".我已经google了这个问题,大多数有这个问题的人忘了初始化recv_length.但我很确定我在这里做得对.谁能看到我做错了什么?或者我是否需要使用正在发送的数据进行更改?传入的数据是否可能没有IP地址.这是我非常怀疑的,因为我正在使用TCP.
谢谢你的时间,我希望我能解决这个问题!
我在C#中有申请表,我有以下代码来验证掩码文本框中的IP地址:
private void MainForm_Load(object sender, EventArgs e)
{
IPAdressBox.Mask = "###.###.###.###";
IPAdressBox.ValidatingType = typeof(System.Net.IPAddress);
IPAdressBox.TypeValidationCompleted += new TypeValidationEventHandler(IPAdress_TypeValidationCompleted);
}
void IPAdress_TypeValidationCompleted(object sender, TypeValidationEventArgs e)
{
if(!e.IsValidInput)
{
errorProvider1.SetError(this.IPAdressBox,"INVALID IP!");
}
else
{
errorProvider1.SetError(this.IPAdressBox, String.Empty);
}
}
Run Code Online (Sandbox Code Playgroud)
在IPAdres_TypeValidationComleted函数中,如果if语句为true,则errorProvider1闪烁并给出"INVALID IP"消息,否则它应该消失.问题是即使我输入有效的IP地址,输入类型似乎总是无效的.