С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/47: Рейтинг темы: голосов - 47, средняя оценка - 4.68
-30 / 8 / 1
Регистрация: 31.05.2013
Сообщений: 485

Создать http запрос используя socket

01.02.2017, 18:56. Показов 9672. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как используя только socket-либ создать полноценный заголовок - протокол, юзерагент и тд... В общем, интересуют только низкоуровневые варианты.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import socket
 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print socket.gethostbyname('2ip.ru')
print socket.gethostbyaddr('127.0.0.1')
sock.connect(('2ip.ru', 80))
sock.send("HEAD / HTTP/1.0\n") # вот тут тормозит
 
data = sock.recv(1024)
sock.close()
 
udata = data.decode("utf-8")
print udata
input()
Добавлено через 7 часов 37 минут
В общем все дело в
Python
1
("\r\n")
, вернее в
Python
1
sock.send("\r\n")
Но почему-то косо работает, зависит от
Python
1
sock.send("Host: google.ru \r\n")
Код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import socket
 
sock = socket.socket()
print socket.gethostbyname('2ip.ru')
print socket.gethostbyaddr('127.0.0.1')
sock.connect(('google.ru', 80))
sock.send("GET / HTTP/1.1 \r\n")
sock.send("Accept: */*")
sock.send("Accept-Language: ru \r\n")
sock.send("User-Agent: HTTPClient \r\n")
#sock.send("Host: google.ru \r\n")
sock.send("\r\n")
data = sock.recv(1024)
sock.close()
 
udata = data.decode("utf-8")
print udata
input()
выдает в консоли:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
HTTP/1.1 302 Found
 
Cache-Control: private
 
Content-Type: text/html; charset=UTF-8
 
Location: [url]http://www.google.ru/?gfe_rd=cr&ei=dQGSWMOXEs3EZMzrlYgJ[/url]
 
Content-Length: 256
 
Date: Wed, 01 Feb 2017 15:40:37 GMT
 
 
 
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.ru/?gfe_rd=cr&amp;ei=dQGSWMOXEs3EZMzrlYgJ">here</A>.
 
</BODY></HTML>
Если же включить
Python
1
sock.send("Host: google.ru \r\n")
, то итог в ссылке будет иным.
Вот какой скрипт:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import socket
 
sock = socket.socket()
print socket.gethostbyname('2ip.ru')
print socket.gethostbyaddr('127.0.0.1')
sock.connect(('google.ru', 80))
sock.send("GET / HTTP/1.1 \r\n")
sock.send("Accept: */*")
sock.send("Accept-Language: ru \r\n")
sock.send("User-Agent: HTTPClient \r\n")
sock.send("Host: google.ru \r\n")
sock.send("\r\n")
data = sock.recv(1024)
sock.close()
 
udata = data.decode("utf-8")
print udata
input()
дает итог:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
HTTP/1.1 301 Moved Permanently
 
Location: [url]http://www.google.ru/[/url]
 
Content-Type: text/html; charset=UTF-8
 
Date: Wed, 01 Feb 2017 15:47:33 GMT
 
Expires: Fri, 03 Mar 2017 15:47:33 GMT
 
Cache-Control: public, max-age=2592000
 
Server: gws
 
Content-Length: 218
 
X-XSS-Protection: 1; mode=block
 
X-Frame-Options: SAMEORIGIN
 
 
 
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.ru/">here</A>.
 
</BODY></HTML>
Т.е. меняется ссылка
HTML5
1
<A HREF="http://www.google.ru/">here</A>
на
HTML5
1
<A HREF="http://www.google.ru/?gfe_rd=cr&amp;ei=dQGSWMOXEs3EZMzrlYgJ">here</A>
Ну и в любом случае, полноценную страницу № 200 так и не удается получить...


Да, и из аргумента
Python
1
sock = socket.socket()
выкинул всякие там
Python
1
(socket.AF_INET, socket.SOCK_STREAM)
без к-либо изменений. Почему?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.02.2017, 18:56
Ответы с готовыми решениями:

Создать свой глобальный сервер используя модуль Socket
Всем привет. Недавно начал изучать модуль Socket и заинтересовался идеей создания своего сервера, но не для единичного пользователя, то...

HTTP GET-запрос используя Socket
Здравствуйте! Не могу разобраться: как послать простой get запрос сайту используя Socket. (без HttpWebRequest или WebClient) ...

Как отправить запрос по https, используя socket()?
Здраствуйте уважаемые знатоки C# технологий. После целого дня, потраченного на то чтобы запарсить один сайт.. я понял, что оказывается...

5
-30 / 8 / 1
Регистрация: 31.05.2013
Сообщений: 485
02.02.2017, 22:07  [ТС]
Что то тихо совсем))
Порассуждаем сам - на -сам))
Что то и с почтой не получается...
Python
1
2
3
4
5
6
7
8
9
10
import socket
 
sock = socket.socket()
sock.connect(('pop3.mail.ru', 110))
sock.send("\r\n")
data = sock.recv(1024)
udata = data.decode("utf-8")
print udata
sock.close()
input()
Результат:
Bash
1
2
>>> 
+OK
Очень скромненький, хотя и положительный... А дальше никакие команды USER PASS не работают((
0
03.02.2017, 21:19

Не по теме:

Цитата Сообщение от Albaz Посмотреть сообщение
Что то тихо совсем))
Во первых через сокеты это изврат, во вторых у вас репа минусовая так что не удивляйтесь.

0
 Аватар для null_0
2 / 2 / 1
Регистрация: 09.10.2016
Сообщений: 29
12.02.2017, 21:04
Avazart,
Цитата Сообщение от Avazart Посмотреть сообщение
через сокеты это изврат
А через что, простите?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
12.02.2017, 21:25
Цитата Сообщение от null_0 Посмотреть сообщение
А через что, простите?
requests, curl ?
0
153 / 148 / 66
Регистрация: 20.02.2014
Сообщений: 556
18.02.2017, 17:54
Albaz, RFC SNMP, RFC HTTP
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.02.2017, 17:54
Помогаю со студенческими работами здесь

Запрос GET в http используя TClientSocket
Добрый день, пытаюсь получить ответ от сайта, но всегда получаю 400 Bad Request. Может кто с таким сталкивался и может подсказать в чем...

Обратиться к веб сервису, используя http запрос
всем привет. имеется веб сервис у него схема wsdl. по какойто причине при формировании объектов хдто согласно схеме , формируется...

Не получается передать POST запрос, используя pear http
Здравствуйте, столкнулся со следующей проблемой. Есть 5 одинаковых скриптов (script1.php, script2.php .... script5.php). Каждый скрипт...

Невозможно создать Socket: Socket sock = new Socket(someHostString,somePortInt);
Народ! Помогите пожалуйста. Вся красота губится на exception что выскакивает в момент создания сокета: Socket sock = new...

Создать http запрос
https://api.worldoftanks.ru/wot/globalwar/battles/?application_id=faa885a970e30caf0b867a842c4cf351&amp;map_id=1&amp;clan_id=10676 хочу запилить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru